可能重复:
Why are C character literals ints instead of chars?
why sizeof('a') is 4 in C?
#include<stdio.h>
int main()
{
char ch;
fflush(stdin);
ch=getchar();
printf("ch= %d a=%d char=%d", sizeof(ch),sizeof('a'),sizeof(char));
}
我输入'a'(不带引号)作为输入,我在 gcc版本4.5.1 中输出的输出是:
ch= 1 a=4 char=1
我的问题是:
如果sizeof(c)
为1
,那么sizeof('a')
如何成为4
?
答案 0 :(得分:10)
在C中,文字字符(例如'a'
)是int
,而不是char
。但是,在C ++中,文字字符是实际的char
s。
答案 1 :(得分:2)
因为在C字符常量中,例如'a'具有类型int
。
关于这个问题有一个C FAQ:
也许令人惊讶的是,C中的字符常量的类型为int ,所以 sizeof('a')是sizeof(int)(尽管这是C ++的另一个区域 不同)。
答案 2 :(得分:0)
在大多数系统中'a = = 97,字符'a'的ASCII值。
例如:
int i = 97;
char c = i;
如果使用选项'%c'打印变量c
的值,您将在屏幕上看到'a'。对于您的问题,我们可以将sizeof('a')
推断为sizeof(i)
与sizeof(97)
相等;
您应该可以在C标准文档中找到它。