在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 關注
- 590 瀏覽
添加回答
舉報
0/150
提交
取消