我的问题是关于C中的sizeof
运算符。
sizeof('a');
等于 4 ,因为它将'a'
作为整数:97。
sizeof("a");
等于 2 :为什么? (int)("a")
也会给出一些垃圾价值。为什么呢?
答案 0 :(得分:22)
'a'
是字符常量 - 标准C中的int
类型 - 代表单个字符。 "a"
是一种不同的东西:它是字符串文字,实际上由两个字符组成:a
和终止空字符
字符串文字是char
的数组,有足够的空间来容纳字符串中的每个字符和终止空字符。因为sizeof(char)
是1
,并且因为字符串文字是数组,sizeof("stringliteral")
将返回字符串文字中的字符元素数,包括终止空字符
'a'
是int
而不是char
是标准C的怪癖,并解释了为什么sizeof('a') == 4
:这是因为sizeof('a') == sizeof(int)
。这是不在C ++中的情况,sizeof('a') == sizeof(char)
。