3

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

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

对比

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

谢谢...

4

2 回答 2

6

这取决于 和 的x类型y

假设xy都是int,这两个语句不等价,因为x - y如果结果不能在int.

假设xand yare both unsigned int,这两个语句是等价的(unsigned int不溢出)。

于 2013-09-16T22:24:13.110 回答
3

不会(x-y)导致溢出。在溢出的情况下,行为是未定义的。在某些系统上它可能会换行,在其他系统上它可能会将结果设置为 0(这会给您带来误报)。

于 2013-09-16T22:23:41.910 回答