在C中,何时±0.0支持-0.0或+0.0分配给double通常不会产生算术差异。尽管它们具有不同的位模式,但它们在算术上的比较是相等的。double zp = +0.0;double zn = -0.0;printf("0 == memcmp %d\n", 0 == memcmp(&zn, &zp, sizeof zp));// --> 0 == memcmp 0printf("== %d\n", zn == zp); // --> == 1受到@Pascal Cuoq注释的启发,我正在寻找标准C中的其他一些函数,这些函数提供算术上不同的结果。注意:许多函数(例如sin())+0.0从f(+0.0)和-0.0从中返回f(-0.0)。但是这些没有提供不同的算术结果。同样,这2个结果不应该同时为NaN。
3 回答
皈依舞
TA贡献1851条经验 获得超3个赞
IEEE 754-2008函数rsqrt
(将在将来的ISO C标准中使用)在±0上返回±∞,这非常令人惊讶。并tgamma
在±0上返回±∞。使用MPFR,mpfr_digamma
在±0上返回与±∞相反的值。
- 3 回答
- 0 关注
- 560 浏览
添加回答
举报
0/150
提交
取消