这些语句是否相同 if (x - y) {} vs. if (x !=y) {}

Are these statements the same if (x - y) {} vs. if (x !=y) {}

本文关键字:if vs 语句 是否      更新时间:2023-10-16

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

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

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

谢谢。。。

这取决于xy的类型。

假设xy都是int,这两个语句不等价,因为如果结果不能在int中表示,x - y会调用未定义的行为。

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

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