考虑以下代码片段
double id = ?;
double res;
long unsigned *res_u = (long unsigned*)&res;
long unsigned i;
for (i = 0; i < (long unsigned)-1; i++){
double *d1 = (double*)&i;
res = id + *d1;
assert(*res_u == i);
}
我的问题:是否有 id
的值,以便断言对所有 i
都成立?换句话说,对于我们中间的数学家来说:加法的中性元素是否为 double?
最佳答案
-0.
矛盾的是浮点值作为加法的中性值。
+0.
几乎是,但是 -0。 + (+0.)
使 +0.
.
除此之外,+inf + (-0.)
生成 +inf
,-inf + (-0.)
生成 -inf
,NaN + (-0.)
生成 NaN
。
关于c - IEEE754中是否有关于加法的中性元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16287864/