値の交換
変数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