我的问题是关于sizeof
C 中的运算符。
sizeof('a');
等于4,因为它将采用'a'
整数:97。
sizeof("a");
等于2:为什么?也会(int)("a")
给出一些垃圾值。为什么?
'a'
是标准 C 中的字符常量,int
表示单个字符。"a"
是另一回事:它是一个字符串文字,实际上由两个字符组成:a
一个终止空字符。
字符串文字是一个 数组char
,有足够的空间来保存字符串中的每个字符和终止的空字符。因为sizeof(char)
is 1
,并且因为字符串文字是一个数组,所以sizeof("stringliteral")
将返回字符串文字中字符元素的数量,包括终止的空字符。
That 'a'
is anint
而不是 achar
是标准 C 的一个怪癖,并解释了原因sizeof('a') == 4
:这是因为sizeof('a') == sizeof(int)
. 在 C++ 中情况并非如此,其中sizeof('a') == sizeof(char)
.
因为 'a' 是一个字符,而 "a" 是一个字符串,由 'a' 字符后跟一个 null 组成。