我最近读到了关于执行swap()的XOR方式:
void swap1(int[] arr, int a, int b) {
arr[a] = arr[a] ^ arr[b];
arr[b] = arr[a] ^ arr[b];
arr[a] = arr[a] ^ arr[b];
}
缩短时间,我们有:
void swap2(int[] arr, int a, int b) {
arr[a] ^= arr[b] ^ (arr[b] = arr[a]);
}
和
void swap3(int arr[], int a, int b) {
arr[a] ^= arr[b] ^= arr[a] ^= arr[b];
}
但是,swap3()
仅适用于C ++,并且在迁移后不适用于Java。 C ++和Java之间有什么区别,当使用不同语言编译时,相同的代码会提供不同的结果?