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

这给出了 4 和 2 的输出。为什么输出是这样的?

4

2 回答 2

5

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

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

于 2012-08-11T14:23:10.993 回答
2

第一个因为'a'是一个字符(注意单引号)并被认为是intC 中的一种类型。

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

于 2012-08-11T14:23:39.950 回答