C与C++中sizeof计算字符字面量'a'结果不同的原因是什么
结果差异的核心原因
两者的差异本质是C和C++标准对字符常量的类型定义不同:
- C语言中,单引号包裹的普通字符常量类型为
int
所以sizeof('a')实际计算的是int类型的内存占用,在常规32位编译环境下int占4字节,因此输出结果为4。 - C++语言中,单引号包裹的普通字符常量类型为
char
char类型的固定大小就是1字节,因此sizeof('a')的输出结果为1。
补充说明
- 如果是宽字符常量
L'a',那么在C和C++中的类型都为wchar_t,计算得到的大小是一致的。 - 如果计算的是char类型变量的大小,比如
char c = 'a'; printf("%d", sizeof(c));,那么在两种语言中的输出也都是1,不存在差异。
内容的提问来源于stack exchange,提问作者Fady Hany
相关产品推荐
相关产品推荐

