交换两个数时,使用下面两种方法,为什么当两个数相同时有一个数就变为0了呢

选择排序1.
arr[i]^=arr[index];
arr[index]^=arr[i];
arr[i]^=arr[index];
2.
arr[i] = arr[i] + arr[index];
arr[index] = arr[i] - arr[index];
arr[i] = arr[i] - arr[index];

交换两个数不是这样的,比如交换A和B,伪代码为:

temp = A;
A = B;
B = temp;

能正常交换,结果没有变为0欸。

这两种方法有局限性,基本只能用于整数交换(还可能不一定对),建议使用一个辅助变量交换或直接用swap