使用异或交换数组中的两个元素,当i = j时,交换之后inputs[i] = input[j] = 0。这是因为
- 第一步inputs[i] = inputs[i] ^ inputs[j],因为inputs[i] = inputs[j],所以inputs[i] = 0。
- 因为i=j,所以同时inputs[j] = inputs[i] = 0,所以最后结果都为0;
inputs[i] = inputs[i] ^ inputs[j];
inputs[j] = inputs[i] ^ inputs[j];
inputs[i] = inputs[i] ^ inputs[j];
如果想得到正确结果,在交换之前应判断 i是否和 j相等。
if(i != j){
//交换
inputs[i] = inputs[i] ^ inputs[j];
inputs[j] = inputs[i] ^ inputs[j];
inputs[i] = inputs[i] ^ inputs[j];
}