C언어를 공부한 사람이라면 call by value 예제로 지겹게 보게 되는 다음 함수를 기억할 것이다.


void swap(int *x, int *y) {

}


보통 이 함수는


void swap(int *x, int *y) {

    int t = *x;

    *x = *y;

    *y = *x;

}


이렇게 코딩되고 변수 선언 없이 하라고 할 경우에는,


void swap(int *x, int *y) {
    *x ^= *y;
    *y ^= *x;
    *x ^= *y;

}


이렇게 코딩할 수 있다.


그렇다면, 세 문장이 아닌 두 문장으로 변수 교환이 가능한가?


단, 콤마(,) 연산자는 사용할 수 없다.