sizeof('a')和sizeof(“a”)之间的差异

时间:2012-09-10 18:11:08

标签: c sizeof

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

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

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

1 个答案:

答案 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)