理解C语言中sizeof运算符

5
char c = 'A';
printf("%d\n",sizeof(c));// output = 1
printf("%d\n",sizeof('A')); // output = 4

为什么相同的字符在使用sizeof运算符时会给出不同的输出?请帮忙解答。

因为'A'没有类型。它被解释为int类型。 - David Hoelzer
2
@DavidHoelzer 它确实有一个类型,而且类型是 int - M.M
好的。由于'A'没有以任何方式进行转换,它在定义上是一个“int”。我更关注的是它们定义方式的不同之处。谢谢! - David Hoelzer
没有类型的表达式这种东西根本不存在...多么奇怪的概念。 - Jim Balter
1个回答

6

c是一个char类型的变量,它的大小为1字节。

'A'是一个int字面值,不要问我为什么标准这样说。在您的平台上,它的大小为4字节(与sizeof(1)相同)。


很久以前,人们使用多字节字符,例如'xy'。PDP11 UNIX代码中有很多这样的内容。当他们将C移植到大端机器时,它基本上消失了。C ++解决了这个问题...字符常量是字符。这是C不是C ++子集的少数几种方式之一。 - Jim Balter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接