为什么这个程序的输出在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


字符文字在C中被视为一个int ,所以你实际上最终打印sizeof(int)而不是sizeof(char)

ideone给出了相同的结果(C,C ++)。


在C字符中,文字是整数。 在C ++中,它们是字符。

链接地址: http://www.djcxy.com/p/85771.html

上一篇: Why is this program's output different between C and C++?

下一篇: Why would the order of linking libs cause runtime errors?