是否有可能在一个语句中交换三个数字
例如:
我希望根据以下列表更改值
a = 20
b = 30
c = 10
Run Code Online (Sandbox Code Playgroud)
这些值可以在一行中传输吗?
$ python
>>> a, b, c = 10, 20, 30
>>> print a, b, c
10 20 30
>>> a, b, c = b, c, a
>>> print a, b, c
20 30 10
Run Code Online (Sandbox Code Playgroud)
这是一个愚蠢的问题.但是这里唯一的答案(到目前为止)是明确定义的C和真正的单行:
a ^= b, b ^= a, a ^= b, b ^= c, c ^= b, b ^= c;
Run Code Online (Sandbox Code Playgroud)
正确使用XOR交换算法.
注意:这假定a,b并且c都是相同的整数类型(问题未指定).
C#中的解决方案.使用XOR交换a和b第一.赋值的结果是赋值,在这种情况下b是最左边的变量,因此它是返回的结果(b ^= a ^ (a ^= b ^= a)).然后交换c并b 使用相同的算法.:)
int a = 10;
int b = 20;
int c = 30;
c ^= (b ^= a ^ (a ^= b ^= a)) ^ (b ^= c ^= b);
Run Code Online (Sandbox Code Playgroud)
我找到了这个问题的另一个解决方案。
您可以在许多语言中使用它,例如C,C++ and Java.
它也适用于float和long。
a=(a+b+c) - (b=c) - (c=a);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5515 次 |
| 最近记录: |