为什么编译器将字符视为整数?

shi*_*ven 4 c integer

我有一小段代码.当我在我的DevC++ gnu编译器上运行它时,它显示以下输出:

 main ()
 {      char b = 'a';
        printf ("%d,", sizeof ('a'));
        printf ("%d", sizeof (b));
        getch ();
 }
Run Code Online (Sandbox Code Playgroud)

输出:4,1

为什么被'a'视为整数,而b被视为只是一个字符常量?

oua*_*uah 9

因为字符文字是类型int而不是charC语言.

所以sizeof 'a' == sizeof (int).

请注意,在C++中,字符文字的类型的char等等sizeof 'a' == sizeof (char).

  • @chris(C99,6.4 .4.4p10)"整数字符常量的类型为int." (2认同)