为什么这个C代码的输出如此

时间:2012-08-11 14:21:10

标签: c

printf("%d %d",sizeof('a'),sizeof("a"))

这是输出为4和2.为什么输出是这样的?

2 个答案:

答案 0 :(得分:5)

在C中,字符常量的类型为int,因此在您的情况下为4个字节。当应用于字符串文字(例如"a")时,sizeof会产生字节数。因此2('a''\0')。

此外,%d不是打印size_t的正确说明符。您应该使用%zu%zd

答案 1 :(得分:2)

第一个因为'a'是一个字符(注释单引号)并在C中被视为int类型。

第二个因为"a"是一个由两个字节'a''\0'组成的字符串(双引号)。