我想知道有没有其他方法可以在一行中交换2个数字,当然也没有第3个变量。
我知道这样做的一种方法:
b=a+b-(a=b)
或
a=a+b-(b=a)
两者相同(大约)。如果你知道的话请帮助我。
答案 0 :(得分:10)
您可能正在寻找的经常被引用的经典答案是:
a^=b^=a^=b;
但是,技术上错误,因为它在序列点之前多次更改同一个变量。
答案 1 :(得分:-1)
在C中使用bit twiddling。在交换两个变量之后:
if (a != b) {
a ^= b ^= a ^= b;
}