はじめに:
2 つの変数の値の交換は、一般的なプログラミング タスクです。通常、3 番目の変数は、交換を容易にするための一時的なプレースホルダーとして使用されます。ただし、シナリオによっては、メモリの最適化などの理由から、余分な変数の作成を避けることが望ましい場合があります。
問題ステートメント:
2 つの変数の値を交換する3 番目の変数を使用しない a と b。
解決策: XOR スワップアルゴリズム
XOR スワップ アルゴリズムは、XOR 演算子 (^) を利用して 2 つの変数の内容を交換します。アルゴリズムは次のように定義されます:
void xorSwap(int* x, int* y) { if (x != y) { //ensure that memory locations are different *x ^= *y; *y ^= *x; *x ^= *y; } }
実装の詳細:
例:
a = 10 および b = を使用してアルゴリズムを示してみましょう。 15:
// Before swap a = 10 (00001010) b = 15 (00001111) // XOR step 1 a = a ^ b = 00001010 ^ 00001111 = 00000101 // XOR step 2 b = b ^ a = 00001111 ^ 00000101 = 00001010 // XOR step 3 a = a ^ b = 00000101 ^ 00001010 = 00001111 // After swap a = 15 b = 10
考慮事項:
XOR スワップ アルゴリズムは効率的ですが、通常、一般的なプログラミング シナリオでの使用は推奨されません。最新のコンパイラーは、一時変数の使用を最適化し、ほとんどの場合、値の交換をより効率的に行うことができます。
以上が3 番目の変数を使用せずに 2 つの変数を交換するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。