为什么sizeof('c')返回4而不是1?

obo*_*obo 4 c

可能重复:
为什么C字符文字的内部而不是字符?

http://ideone.com/lHYY8

int main(void)
{
        printf("%d %d\n", sizeof('c'), sizeof(char));
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么sizeof('c')返回4而不是1?

cni*_*tar 16

因为在C字符常量中有类型int,而不是char.所以sizeof('c') == sizeof(int).请参阅此C FAQ

也许令人惊讶的是,C中的字符常量是int类型,因此sizeof('a')是sizeof(int)(尽管这是C++不同的另一个区域).