在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 0
printf("== %d\n", zn == zp); // --> == 1
受到@Pascal Cuoq注释的启发,我正在寻找标准C中的其他一些函数,这些函数提供算术上不同的结果。
注意:许多函数(例如sin())+0.0从f(+0.0)和-0.0从中返回f(-0.0)。但是这些没有提供不同的算术结果。同样,这2个结果不应该同时为NaN。
翻过高山走不出你
相关分类