这个条件何时评估为False?

a_m*_*m0d 1 c

在什么情况下会执行以下代码的"假"部分?

x = 20;
y = -30;
if (x > y) {
    // True part
}
else {
    // False part
}
Run Code Online (Sandbox Code Playgroud)

注意:语言是C,编译器是gcc(虽然其他一些编译器也可能做同样的事情).

sha*_*oth 6

如果y是无符号整数类型,它将被初始化为某个非常大的值(因为表示负整数值的方式),并且比较表达式将计算为false.

  • 这并不是"因为表示负整数值的方式",而是因为这是语言定义了超出范围值到无符号类型的转换(它与表示无关). (2认同)