[英]Are these statements the same if (x - y) {} vs. if (x !=y) {}
我已经编程了一段时间,在我看来,以下两个if语句会产生相同的结果,但我总是质疑它,有人可以帮我解决这个问题吗?
int x, y;
if (x - y) {
//some code
}
VS
int x, y;
if (x != y) (
// some code
}
谢谢...
它取决于x
和y
的类型。
假设x
和y
都是int
,则两个语句不等效,因为如果结果在int
无法表示,则x - y
将调用未定义的行为。
假设x
和y
都是unsigned int
,则这两个语句是等价的( unsigned int
不会溢出)。
如果(xy)
可能导致溢出,则不会。 如果发生溢出,则行为未定义。 在某些系统上它可能会换行,在其他系统上它可能会将结果设置为0(这会给你误报)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.