我有两个双打并且x
已知是一个特定的 NaN 值,我想看看它们是否按位相同。也就是说,我想确定是否与 NaN 值完全相同。y
y
x
y
NaN 不能与操作符进行有用的比较,==
因为 NaN 永远不等于任何其他值(甚至不等于它们自己!)。
有没有比以下“按位相等”方法更好的方法(这种方法合法吗?):
bool bitwise_equal(double x, double y) {
unsigned char xbytes[sizeof(x)];
unsigned char ybytes[sizeof(y)];
memcpy(xbytes, &x, sizeof(x));
memcpy(ybytes, &y, sizeof(y));
return memcmp(xbytes, ybytes, sizeof(x)) == 0;
}