在不使用临时变量的情况下交换4个变量

时间:2013-10-28 17:23:39

标签: c

我想在不使用临时变量的情况下交换4个变量。这可能吗?

我想像a = b & b = c & c = d & d = a那样做,而不使用临时新的第5个变量。

**更新: - 好吧......明白了!没有另一个新变量就无法完成!

我怎么能用一个临时变量呢?**

2 个答案:

答案 0 :(得分:6)

您可以在连续对上使用XOR swap来交换 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;

答案 1 :(得分:0)

如果你没有使用任何第五个变量,我们可以这样工作,如果你有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;