5

我的问题是关于sizeofC 中的运算符。

sizeof('a');等于4,因为它将采用'a'整数:97。

sizeof("a");等于2:为什么?也会(int)("a")给出一些垃圾值。为什么?

4

2 回答 2

22

'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).

于 2012-09-10T18:12:21.503 回答
4

因为 'a' 是一个字符,而 "a" 是一个字符串,由 'a' 字符后跟一个 null 组成。

于 2012-09-10T18:12:48.460 回答