在C++中sizeof('a') == sizeof(char) == 1.这具有直观意义,因为它'a'是一个字符文字,并且sizeof(char) == 1由标准定义.
然而,在C中sizeof('a') == sizeof(int).也就是说,看起来C字符文字实际上是整数.有谁知道为什么?我可以找到很多关于这个C怪癖的提及,但没有解释为什么它存在.
可能重复:
为什么C字符文字的内部而不是字符?
int main(void)
{
printf("%d %d\n", sizeof('c'), sizeof(char));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么sizeof('c')返回4而不是1?
#include<stdio.h>
int main()
{
char ch;
fflush(stdin);
ch=getchar();
printf("ch= %d a=%d char=%d", sizeof(ch),sizeof('a'),sizeof(char));
}
Run Code Online (Sandbox Code Playgroud)
我输入'a'(不带引号)作为输入,我在gcc 4.5.1版中得到的输出是:
ch= 1 a=4 char=1
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如果sizeof(c)是1,那又怎么sizeof('a')会4?