我有一个union
定义如下:
union V64
{
double f64;
__int64 i64;
unsigned __int64 u64;
};
我想对未知类型的 8 字节值与另一个V64
已知类型的值进行惰性比较(相等和不等)。无论基础类型如何,比较i64
两个V64
s 是否会始终如一地给我预期的结果?例如:
V64 a.u64 << 9007199254740993+500; //pseudo-code reading raw bytes
V64 b.u64 << -9007199254740993-501; //pseudo-code reading raw bytes
if(a.i64 > b.i64)
{/*do stuff*/}
比较u64
在一个为负数f64
时崩溃,当值超过double
's int
storage (2^53 +1)时比较崩溃。比较i64
似乎有效,但可能有一个我没有考虑过的情况。