我的问题是关于sizeofC 中的运算符。
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 组成。