tea*_*eef 2 c
如果x和y都int将x-y < 0始终返回相同的结果x < y?
x
y
int
x-y < 0
x < y
Pau*_*kin 9
否.如果x-y导致溢出或下溢,则行为未定义(因为int是带符号的类型).
x-y
例如INT_MIN - 1 < 0,未定义的行为,而INT_MIN < 1定义(和真).
INT_MIN - 1 < 0
INT_MIN < 1
当没有溢出,那么两个表达式,x-y < 0并且x < y是相同的.
因为编译后的代码可能会在出现未定义的行为时执行任何操作,因此允许C编译器重写x-y < 0,x < y就像它希望的那样.如果x且y是无符号类型,则溢出是明确定义的,并且不等效x-y < 0,x < y则不是这样.
归档时间:
12 年,4 月 前
查看次数:
73 次
最近记录: