是一个整数除以自身保证是1.f?
如果我写:
int x = /* any non-zero integer value */; float y = x; float z = y / y;
z
保证完全是1.f?
如果你的C ++实现使用IEEE754,那么是的,这是有保证的。 (划分运算符需要返回最好的浮点值)。
y / y
的唯一例外,一般来说不是1f
的情况是y
是NaN
, +Inf
, -Inf
, 0f
和-0f
,或者如果你在一个平台上int
的宽度太大,如果没有将该float
设置为+Inf
或-Inf
1 ,则不能用float
表示。 抛开最后一点,在你的情况下,这意味着int x = 0;
将会产生唯一的例外。
IEEE754是非常普遍的。 但要检查确定,testing的价值
std::numeric_limits<float>::is_iec559;
1一个平台,例如,一个128位的int
和一个IEEE754的32位float
将会为x
某些值performance出这种行为。
不,并不是所有情况下,即使是IEEE754。
例如,用int x = 0;
,你会得到NaN。 ( Live )