为什么这个程序的输出在C和C ++之间是不同的?
可能重复:
C / C ++中字符的大小('a')
以下程序
#include <stdio.h>
int main()
{
printf("%dn", sizeof(' '));
printf("%dn", sizeof(0));
}
用gcc输出编译
4
4
和g ++
1
4
这是为什么发生? 我知道这不是编译器,而是C和C ++之间的区别,但是原因是什么?
在C中,字符常数具有类型int
标准的每6.4.4.4(10),
整数字符常量的类型为int。 包含映射到单字节执行字符的单个字符的整数字符常量的值是被解释为整数的映射字符表示的数值。
因此你打印出一个int
的大小两次。
在C ++中,字符常量的类型为char
。