有人可以解释为什么在C sizeof(char)
= 1且sizeof(name[0])
= 1但sizeof('a')
= 4?
name[0]
将是char name[1] = {'a'};
我试过通过C的文档来阅读这个但是我根本就没有得到它!如果sizeof('a')
和sizeof(name[0])
都是4,我会得到它,如果它们都是1则有意义......但我没有得到差异!
答案 0 :(得分:6)
在C中,'a'
等字符文字的类型为int
,因此sizeof('a')
等于sizeof(int)
。
在C ++中,字符文字的类型为char
,因此sizeof('a')
等于sizeof(char)
。
参考文献:
C99标准:6.4.4.4字符常数
第2段:
整数字符常量是包含的一个或多个多字节字符的序列 在单引号中,如
’x’
或’ab’
。
C ++ 03标准:2.13.2字符文字
第1段:
字符文字是用单引号括起来的一个或多个字符,如
’x’
中,可选地以字母L开头,如L’x’
中所示。不以L
开头的字符文字是普通字符文字,也称为窄字符文字。 包含单个c-char的普通字符文字具有类型char
,其值等于执行字符集中c-char编码的数值。
答案 1 :(得分:0)
在c中,sizeof运算符将'a'视为整数,因此您将 4 作为大小