一時変数を使用せずに 4 つの変数を交換したい。それは可能ですか?
a = b & b = c & c = d & d = a
新しい5番目の変数にtempを使用せずに、のようにしたい。
**更新: - わかりました.. わかりました! 別の新しい変数なしでは実行できません!
単一の一時変数でどのように行うことができますか?**
一時変数を使用せずに 4 つの変数を交換したい。それは可能ですか?
a = b & b = c & c = d & d = a
新しい5番目の変数にtempを使用せずに、のようにしたい。
**更新: - わかりました.. わかりました! 別の新しい変数なしでは実行できません!
単一の一時変数でどのように行うことができますか?**
連続するペアでXOR スワップを使用して、一時変数なしでn 個の変数を交換できます。
a b c d // Variables
-------
A B C D // Initial values
B A C D // swap(a,b)
B C A D // swap(b,c)
B C D A // swap(c,d)
とはいえ、一時変数を使用すると理解しやすく、必ずしも効率が低下するわけではありません。
編集
更新された質問では、変数を単一の一時変数と交換する方法を尋ねています。かんたんだよ。
int temp = a;
a = b;
b = c;
c = d;
d = temp;
5 番目の変数を使用せずに、4 つの変数 x、y、z、w があり、それらを x=y、y=z、z=w、w=x にしたい場合、このように作業できます。
x=x+y;
y=x-y;
x=x-y;
y=y+z;
z=y-z;
y=y-z;
z=z+w;
w=z-w;
z=z-w;