Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在不使用临时变量的情况下交换4个变量_C - Fatal编程技术网

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

C 在不使用临时变量的情况下交换4个变量,c,C,我想在不使用临时变量的情况下交换4个变量。可能吗 我想像a=b&b=c&c=d&d=a,而不使用新的第五个变量temp **更新:-确定。。知道了!如果没有另一个新变量,这是不可能的 如何使用单个临时变量执行此操作?***您可以在连续对上使用,在没有临时变量的情况下交换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

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

我想像
a=b&b=c&c=d&d=a
,而不使用新的第五个变量temp

**更新:-确定。。知道了!如果没有另一个新变量,这是不可能的

如何使用单个临时变量执行此操作?***

您可以在连续对上使用,在没有临时变量的情况下交换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;

首先交换
a
b
然后交换
b
d
然后交换
c
b
…我不明白您更新的问题。@Kay我想至少用一个临时变量来做。。。这有可能吗?你说的“不一定效率更低”是指“当然效率更高”。这是我的猜测,但我没有在任何地方测量过。@andythonas如果
c=d
,那么
c等于等于a
:(所以这不对!@user2925358-试试代码-它有效。它没有设置“c等于temp”任何地方。语句“c=d”将变量d的值复制到变量c中。变量c不受对d的后续更改的影响。将其视为四个框,每个框上都有一页纸,上面有一个整数。语句“c=d”将该页复制到框d中,然后将副本放入框c中。然后是“d=temp”将值复制到temp中,并将副本放入框d中。