如果(x - y){}与if(x!= y){}相同,这些陈述是否相同

时间:2013-09-16 22:21:16

标签: c++ c

我已经编程了一段时间,在我看来,以下两个if语句会产生相同的结果,但我总是质疑它,有人可以帮我解决这个问题吗?

int x, y;
if (x - y) {
  //some code
}

VS

int x, y;
if (x != y) (
  // some code
}

...谢谢

2 个答案:

答案 0 :(得分:6)

取决于xy的类型。

假设xy都是int,则两个语句不相等,因为x - y如果结果在{{1}中无法表示,则会调用未定义的行为}}

假设intx都是y,则这两个语句是等效的(unsigned int不会溢出)。

答案 1 :(得分:3)

如果(x-y)可能导致溢出,则不会。如果发生溢出,则行为未定义。在某些系统上它可能会换行,在其他系统上它可能会将结果设置为0(这会给你误报)。