XOR-swap 会导致溢出吗?它是否适用于浮点数?
Could XOR-swap cause an overflow and does it work with floats?
假设我想使用异或交换交换变量 a
和 b
。
a = a ^ b;
b = a ^ b;
a = a ^ b;
这会导致溢出吗?当它们是 float 或 double 类型时,我可以交换这些数字吗?
这将有未定义的行为;它可能会导致许多问题。
即使假设您找到了一种可靠的方法来将浮点数的位表示作为相同大小的整数,您在执行中间 XOR 时仍可能设法创建浮点陷阱表示,因此存储转换为浮点值可能会有问题。
XOR hack 已经过时了。使用临时的。您的计算机可能有很多个浮点寄存器,使用它们真的很快。
假设我想使用异或交换交换变量 a
和 b
。
a = a ^ b;
b = a ^ b;
a = a ^ b;
这会导致溢出吗?当它们是 float 或 double 类型时,我可以交换这些数字吗?
这将有未定义的行为;它可能会导致许多问题。
即使假设您找到了一种可靠的方法来将浮点数的位表示作为相同大小的整数,您在执行中间 XOR 时仍可能设法创建浮点陷阱表示,因此存储转换为浮点值可能会有问题。
XOR hack 已经过时了。使用临时的。您的计算机可能有很多个浮点寄存器,使用它们真的很快。