C:解释行为的大小

时间:2012-06-22 05:39:25

标签: c sizeof

  

可能重复:
  Size of character ('a') in C/C++

有人可以解释为什么在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则有意义......但我没有得到差异!

2 个答案:

答案 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 作为大小