値の交換

変数a,bの値を交換するには、

a = b;b = a;  /* 駄目 */

では駄目である。余分な変数tempを使って

temp = a;a = b; b = temp;

とする。あるいはビットごとの排他的論理和を使って

b ^= a; a ^= b; b ^= a;

としてもよい。

#include<stdio.h>

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

    temp = *x;  *x = *y;    *y = temp;
}
int main(void){
    int a = 1,  b = 2;
    printf("a = %d,b = %d\n",a,b);
    swap(&a, &b);
    printf("a = %d,b = %d\n",a,b);
}

実行してみる

a = 1,b = 2
a = 2,b = 1