c++ - 如何使用 XOR 赋值运算符 ^= 来反转 c 中的数组
问题描述
我遇到了这个功能
void reverseArray(int *a,int n)
{
for(int i=0,j=n-1;i<j;i++,j--)
{
a[i]^=a[j]^=a[i]^=a[j];
}
}
这是反转一个给定的数组,但我不知道这是如何反转一个数组,不是 Xor 运算符只返回非公共位。那么反转给定数组的逻辑是什么。
解决方案
a ^= b ^= a ^= b;
是交换两个数字的一种奇特方式,称为XOR swap。
您应该更喜欢可读性更高的std::swap
,或(在 C 中)临时变量。