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

时间:2012-01-02 07:06:50

标签: c char ascii

  

可能重复:
  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

3 个答案:

答案 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标准文档中找到它。