首页 > 解决方案 > 如何使用 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 运算符只返回非公共位。那么反转给定数组的逻辑是什么。

标签: c++c

解决方案


a ^= b ^= a ^= b;是交换两个数字的一​​种奇特方式,称为XOR swap

您应该更喜欢可读性更高的std::swap,或(在 C 中)临时变量。


推荐阅读