一般に、2つの数値を交換するために、2つの数値の値を交換するための中間変数を定義します。これも、最も単純で理解しやすい方法です。しかし、中間変数を使用せずに2つの数値を交換することは可能ですか?答えはイエスです。
まず、中間変数を導入する方法について話しましょう。
コードは以下のように表示されます:
#include<stdio.h>
int main()
{
int a=10;
int b=20;
int tmp=a;
a=b;
b=tmp;
printf("%d %d\n",a,b);
return 0;
}
結果は次のとおりです。
方法2:(数学演算と同様)
(1)コードは次のとおりです。
#include<stdio.h>
int main()
{
int a=10;
int b=20;
a=a-b;
b=a+b;
a=b-a;
printf("%d %d\n",a,b);
return 0;
}
結果は次のとおりです。
(2)方法2:
コードは以下のように表示されます:
#include<stdio.h>
int main()
{
int a=10;
int b=20;
a=a+b;
b=a-b;
a=a-b;
/*a=a-b;
b=a+b;
a=b-a;*/
printf("%d %d\n",a,b);
return 0;
}
結果は次のとおりです。
方法3(まだわかりませんが、一般的な問題は正しく解決できます):
手順は次のとおりです。
#include<stdio.h>
int main()
{
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
printf("%d %d\n",a,b);
return 0;
}
結果は次のとおりです。
個人的には、方法1はシンプルで理解しやすいと思います。
お役に立てれば幸いです。