我已经编程了一段时间,在我看来,以下两个if语句会产生相同的结果,但我总是质疑它,有人可以帮我解决这个问题吗?
int x, y;
if (x - y) {
//some code
}
VS
int x, y;
if (x != y) (
// some code
}
...谢谢
答案 0 :(得分:6)
取决于x
和y
的类型。
假设x
和y
都是int
,则两个语句不相等,因为x - y
如果结果在{{1}中无法表示,则会调用未定义的行为}}
假设int
和x
都是y
,则这两个语句是等效的(unsigned int
不会溢出)。
答案 1 :(得分:3)
如果(x-y)
可能导致溢出,则不会。如果发生溢出,则行为未定义。在某些系统上它可能会换行,在其他系统上它可能会将结果设置为0(这会给你误报)。