C言語では2つの変数の値を交換するという操作がよく使われますが、一時変数を使わずに2つの変数の値を交換する方法などの質問も多くいただきます。全部で5つの方法をまとめていますので、ぜひ読んでみてください。
1. 一時変数法
方法説明: 一時変数法を中間遷移として使用する、最もシンプルで誰もが思いつきやすい方法です。さまざまなアプリケーションがあり、熟練する必要があります。
#include<stdio.h> int main(void){ int a=1,b=2,tmp; tmp =a; a=b; b=tmp; printf("%d %d",a,b); return 0; }
2. 加減算交換法
方法説明: その名の通り、数学における加減算法を利用して交換を行うもので、まず a b の結果を一時的に保存します。変数 a を渡し、これを渡します 交換された b は、元の b から変更された a を減算することで取得できますが、欠点は、 a b の結果が範囲外になる可能性があることです。
#include<stdio.h> int main(void){ int a=1,b=2; a = a + b; b = a - b; a = a - b; printf("%d %d",a,b); return 0; }
3. 乗算と除算の交換方法
方法の説明: この方法は加算と減算に似ており、加算と減算が乗算と除算に置き換えられます。乗算を使用すると、加算よりも境界を越えやすくなります。使用には注意が必要です。
#include<stdio.h> int main(void){ int a=1,b=2; a = a * b; b = a / b; a = a / b; printf("%d %d",a,b); return 0; }
4. , a^b^b=aなのでスムーズにやりとりが完了します この方法は完璧で国境を越えた問題もありません。
#include<stdio.h> int main(void){ int a=1,b=2; a = a ^ b; b = a ^ b; a = a ^ b; printf("%d %d",a,b); return 0; }
5. シフト交換方式
方式の説明: この方式は一般的には使用されません. 原理は int 型の a の元の値を上位 16 ビットと下位 16 ビットに分割することです. , これは、ターンオーバー用の一時記憶域の 16 ビット追加に相当します。欠点は、a または b が 16 ビットを超えると、この方法が失敗することです。この方法はより複雑でエラーが発生しやすいため、次の用途にはお勧めできません。みんなが使えるように。
#include<stdio.h> int main(void){ int a=1,b=2; a <<= 16; a |= b; b = a >> 16; a = a & 0xffff; printf("%d %d",a,b); return 0; }
考察の要約:
実際、これら 5 つのメソッドは基本的に 3 つのカテゴリに分類されます。1 つは一時変数、もう 1 つは加算、減算、乗算、除算の演算、そして 3 つ目はビット演算です。それぞれに長所と短所があるため、個人的には一時変数方式と XOR 交換方式を使用することをお勧めします。一時変数方式は他の場所でも広く使用されています。ここで焦点を当てましょう。ここで終了します。ありがとうございます。」みんな。
関連チュートリアル:
以上が【C言語】変数の値を簡単に交換する方法を教える5つのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。