m.z*_*unt 2 c++ floating-point swap xor
是否可以在C++中使用具有浮点值的XOR交换算法?
然而,维基百科说:
XOR按位运算以交换具有相同数据类型的不同变量的值
但我有点困惑.使用此代码:
void xorSwap (int* x, int* y) {
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
int main() {
float a = 255.33333f;
float b = 0.123023f;
xorSwap(reinterpret_cast<int*>(&a), reinterpret_cast<int*>(&b));
std::cout << a << ", " << b << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它似乎工作(至少在gcc下),但我担心如果需要这样的做法?
从技术上讲,你问的是可能的,但正如IInspectable明确评论的那样,它会导致UB(未定义的行为).
无论如何,我建议你使用std :: swap,它是一个专门用于特定数据类型的模板,旨在做好工作.
| 归档时间: |
|
| 查看次数: |
2101 次 |
| 最近记录: |