我想在不使用临时变量的情况下交换 4 个变量。那可能吗?
我想做 like a = b & b = c & c = d & d = a
,而不使用 temp 一个新的第 5 个变量。
**更新:-好的..明白了!没有另一个新变量就无法完成!
我怎么能用一个临时变量做到这一点?**
我想在不使用临时变量的情况下交换 4 个变量。那可能吗?
我想做 like a = b & b = c & c = d & d = a
,而不使用 temp 一个新的第 5 个变量。
**更新:-好的..明白了!没有另一个新变量就无法完成!
我怎么能用一个临时变量做到这一点?**
您可以在连续对上使用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;
不使用任何第五个变量,如果你有 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;