是一个整数除以自身保证是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 )