这是我的C代码: 为什么输出“假”?????
为什么4> -1 ???
代码:
#include <stdio.h>
int main() {
if (sizeof(int) > -1)
printf("True");
else
printf("False");
return 0;
}
答案 0 :(得分:11)
因为sizeof(int)是无符号的。所以-1被转换为一个大的无符号值。
答案 1 :(得分:4)
因为sizeof
产生类型为size_t
的值,这是一种无符号类型。在>
表达式中,通常的算术转换会将-1
转换为无符号类型,这是>
结果的类型。由此产生的价值将是巨大的正值。
要获得预期的行为,请使用:
(int) sizeof (int) > -1