为什么它显示不同的大小?

时间:2021-06-07 13:10:25

标签: c charts types integer sizeof

为什么这个语句显示 2 个字节而字符串中只有一个字符

printf("%d = Bytes", sizeof("a")); 

为什么这个语句显示 4 个字节而一个字符中只有一个字符。

printf("%d = Bytes", sizeof('a')); 

1 个答案:

答案 0 :(得分:2)

字符串字面量,这个:"a" 等价于 C 中的字符数组。如果对它们使用 sizeof,你会得到数组的大小。 a 和空终止符 \0 是 2 个字节,所以你得到 2。不要与 strlen("a") 混淆,它会给出 1。

'a' 是一个字符常量。奇怪的是,由于历史原因,这些在 C 中属于 int 类型。而不是 char,这是有道理的。这是一种 C 语言缺陷。在 C++ 中,他们解决了这个问题,字符文字的大小为 1。但在 C 中,sizeof('a') 将始终等于 sizeof(int)。在您的系统上,这显然是 4 个字节。

相关问题