C/C++:sizeof('a')的值为什么不一样?

简介:

C语言:

char a = 'a';

sizeof(char) = 1

sizeof(a) = 1

sizeof('a') = 4

C++语言:

char a = 'a';

sizeof(char) = 1

sizeof(a) = 1

sizeof('a') = 1

字符型变量是1字节这个没错,奇怪就奇怪在C语言认为'a'是4字节,而C++语言认为'a'是1字节。

原因如下:

C99标准的规定,'a'叫做整型字符常量(integer character constant),被看成是int型,所以在32位机器上占4字节。

ISO C++标准规定,'a'叫做字符字面量(character literal),被看成是char型,所以占1字节。

 本文转载自海 子博客园博客,原文链接:http://www.cnblogs.com/dolphin0520/archive/2011/04/04/2005089.html如需转载自行联系原作者


相关文章
|
27天前
|
C++
C/C++】如何不使用 sizeof 求数据类型占用的字节数
C/C++】如何不使用 sizeof 求数据类型占用的字节数
|
4月前
|
C语言 C++
C++ sizeof()运算符的参数为指针和数组的值为什么不同
C++或C语言中,都可以使用sizeof()运算符来计算数组的字节大小,除此之外,在C++和C语言中,都可以使用一个指向数组第一个元素的内存地址的指针来引用数组,因此,如果要计算数组的字节大小,或长度,传递数组本身或传递指向数组的指针给sizeof()运算符似乎都是可以的,实际上则不然,
46 5
|
4月前
|
安全
来自c++primer5的sizeof运算符
来自c++primer5的sizeof运算符
13 0
|
5月前
|
Linux C++
(C++)VS下sizeof(string(““))与linux-g++下sizeof(string(““))大小区别及原因剖析
(C++)VS下sizeof(string(““))与linux-g++下sizeof(string(““))大小区别及原因剖析
37 0
(C++)VS下sizeof(string(““))与linux-g++下sizeof(string(““))大小区别及原因剖析
|
11月前
|
存储 编译器 C++
C++ sizeof 的介绍
C++ sizeof 的介绍
90 0
|
C++
如何在不使用 sizeof 的情况下在 C/C++ 中找到数组的大小?
我们可以使用 sizeof 运算符找到数组的大小
120 0
|
编译器 C语言 C++
C/C++ 中的 sizeof 运算符和 size_t 类型
C/C++ 中的 sizeof 运算符和 size_t 类型
|
存储 C++
C/C++零散知识点汇总之sizeof()和strlen()
C/C++零散知识点汇总之sizeof()和strlen()
|
C++
C/C++size(),sizeof(),length(),strlen() 对比分析详解
C/C++size(),sizeof(),length(),strlen() 对比分析详解
131 0
C/C++size(),sizeof(),length(),strlen() 对比分析详解
|
存储 编译器 C++
C/C++ 基础之 sizeof 使用(二)
C/C++ 基础之 sizeof 使用
114 0