【发布时间】:2021-03-16 12:26:36
【问题描述】:
int main()
{
if(sizeof(double) > -1)
printf("M");
else
printf("m");
return 0;
}
我希望输出是 M,但它是 m。谁能解释一下输出的原因?
【问题讨论】:
int main()
{
if(sizeof(double) > -1)
printf("M");
else
printf("m");
return 0;
}
我希望输出是 M,但它是 m。谁能解释一下输出的原因?
【问题讨论】:
那是因为sizeof返回一个size_t的值,即无符号整数类型,所以-1会溢出。
【讨论】:
sizeof(double) > -1 中,-1 被转换为size_t。这被定义为包装而不是溢出。