【发布时间】:2021-08-24 13:48:28
【问题描述】:
为什么这个语句显示 2 个字节,而字符串中只有一个字符
printf("%d = Bytes", sizeof("a"));
为什么这个语句显示 4 个字节,而一个字符中只有一个字符。
printf("%d = Bytes", sizeof('a'));
【问题讨论】:
-
在 C 中,所有文字字符串(带有双引号
"的字符串)实际上都是不可修改的数组,其中的字符加上字符串空终止符. -
顺便说一下,
sizeof运算符返回一个size_t类型的值,您确实需要使用%zu格式来打印。格式说明符和参数类型不匹配会导致未定义的行为。 -
补充 @Someprogrammerdude 类型不匹配 - 编译器警告是有原因的......
-
'a'的类型是int,它的大小似乎是 4 个字节。 -
顺便说一句,像
sizeof('abcde')这样很少使用的宽字符常量也是4。
标签: c charts types integer sizeof