0

I recently read about the XOR way to do swap():

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];
}

Making it shorter, we have:

void swap2(int[] arr, int a, int b) {
    arr[a] ^= arr[b] ^ (arr[b] = arr[a]);
}

And:

void swap3(int arr[], int a, int b) {
    arr[a] ^= arr[b] ^= arr[a] ^= arr[b];
}

However, swap3() only works in C++ and doesn't work on Java after migrated. What difference between C++ and Java makes the same code provide different results when compiled in different language?

Shone
  • 76
  • 7

0 Answers0