sizeof(c)和size('a')给出不同的结果.(c是字符变量)

sbo*_*ose 2 c ascii char

可能重复:
为什么C字符文字的内部而不是字符?
为什么sizeof('a')在C中是4?

#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

Dan*_*her 10

在C中,文字字符(例如'a')是int,而不是char.但是,在C++中,文字字符是实际char的.