在C中比较整数的结果

时间:2014-06-01 09:26:49

标签: c

如果xy都是intx-y < 0总是会返回与x < y相同的结果吗?

2 个答案:

答案 0 :(得分:9)

没有。如果x-y导致上溢或下溢,则行为未定义(因为int是带符号的类型)。

例如INT_MIN - 1 < 0是未定义的行为,而INT_MIN < 1是定义的(和true)。

当没有溢出时,x-y < 0x < y这两个表达式是相同的。

由于编译后的代码可能会在未定义的行为时执行任何操作,因此如果需要,C编译器可以将x-y < 0重写为x < y。如果xy是无符号类型,其中溢出定义明确,且x-y < 0x < y不相等,则情况并非如此。

答案 1 :(得分:0)

正如@ sgar91所说,没有。

例如:

X=0x80000000 //which is IntMin Y=1 x-y < 0 // will be false as x-y = 0x7FFFFFFF = +Maxint
但是

x < y //will be true