问题描述
int main()
{
if(sizeof(int)>-1)
printf("true");
else
printf("False");
return 0;
}
这个程序在运行时打印出“False”。为什么会这样? 即使它的大小是 4?
解决方法
sizeof() 的结果是无符号值,而比较的右侧是有符号的。编译器会先将右边转换成无符号(一个非常大的数字),然后再进行比较。
int main()
{
if(sizeof(int)>-1)
printf("true");
else
printf("False");
return 0;
}
这个程序在运行时打印出“False”。为什么会这样? 即使它的大小是 4?
sizeof() 的结果是无符号值,而比较的右侧是有符号的。编译器会先将右边转换成无符号(一个非常大的数字),然后再进行比较。