是一个整数除以自身保证是1.f?

如果我写:

int x = /* any non-zero integer value */; float y = x; float z = y / y; 

z保证完全是1.f?

如果你的C ++实现使用IEEE754,那么是的,这是有保证的。 (划分运算符需要返回最好的浮点值)。

y / y唯一例外,一般来说不是1f的情况是yNaN+Inf-Inf0f-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 )