我有一小段代码。当我在我的DevC++ gnu编译器上运行它时,它显示了以下输出:
main ()
{ char b = 'a';
printf ("%d,", sizeof ('a'));
printf ("%d", sizeof (b));
getch ();
}
产出:4 1
为什么'a'
被视为整数,而b
则仅被视为字符常量?
发布于 2012-07-26 07:21:58
因为字符文本在C中是int
类型的,而不是char
类型的。
所以sizeof 'a' == sizeof (int)
。
注意,在C++中,字符文字的类型是char
,所以是sizeof 'a' == sizeof (char)
。
发布于 2012-07-26 07:27:04
这正是C语言最初定义的方式。为什么..。那时,C中的几乎所有东西都是int
,除非有一个非常好的理由让它成为其他的东西。因此,历史上C中的字符常量具有int
类型。
注BTW,在C术语中,'a'
被称为常量,而不是文字。C有字符串文本,而没有其他文本。
发布于 2012-07-26 07:29:17
在C中,字符文字有int类型。
在C++中,只包含一个字符的字符字符具有char类型,它是一个整体类型。
在C和C++中,宽字符文字有wchar_t类型,多字符文字有int类型。
https://stackoverflow.com/questions/11672582
复制相似问题