Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我已经编程了一段时间,在我看来,以下两个 if 语句会产生相同的结果,但我总是质疑它,有人可以帮我解决这个问题吗?
int x, y; if (x - y) { //some code }
对比
int x, y; if (x != y) ( // some code }
谢谢...
这取决于 和 的x类型y。
x
y
假设x和y都是int,这两个语句不等价,因为x - y如果结果不能在int.
int
x - y
假设xand yare both unsigned int,这两个语句是等价的(unsigned int不溢出)。
unsigned int
不会(x-y)导致溢出。在溢出的情况下,行为是未定义的。在某些系统上它可能会换行,在其他系统上它可能会将结果设置为 0(这会给您带来误报)。
(x-y)