问题描述
printf("%d = Bytes",sizeof("a"));
printf("%d = Bytes",sizeof('a'));
解决方法
字符串字面量,这个:"a"
等价于 C 中的字符数组。如果对它们使用 sizeof
,你会得到数组的大小。 a
和空终止符 \0
是 2 个字节,所以你得到 2。不要与 strlen("a")
混淆,它会给出 1。
'a'
是一个字符常量。奇怪的是,由于历史原因,这些在 C 中属于 int
类型。而不是 char
,这是有道理的。这是一种 C 语言缺陷。在 C++ 中,他们解决了这个问题,字符文字的大小为 1。但在 C 中,sizeof('a')
将始终等于 sizeof(int)
。在您的系统上,这显然是 4 个字节。