【发布时间】:2019-07-30 12:12:02
【问题描述】:
#include <stdio.h>
int main()
{
char c = '0';
printf("%d %d",sizeof(c), sizeof('0'));
return 0;
}
我希望输出是 1 1。但实际结果是 1 4。
【问题讨论】:
-
'0'是一个整数。 -
sizeof()返回一个size_t,用%zu正确打印。用%d打印size_t是未定义的行为。 -
你会喜欢我曾经使用过的 DSP,它有
CHAR_BIT == 16和sizeof(char) == sizeof(int)——在 this 机器上,你会收到你期望的输出...