如何在C中的一行中交换两个变量?

时间:2013-08-23 04:17:06

标签: c

我想知道有没有其他方法可以在一行中交换2个数字,当然也没有第3个变量。

我知道这样做的一种方法:

b=a+b-(a=b) 

a=a+b-(b=a)

两者相同(大约)。如果你知道的话请帮助我。

2 个答案:

答案 0 :(得分:10)

您可能正在寻找的经常被引用的经典答案是:

a^=b^=a^=b;

但是,技术上错误,因为它在序列点之前多次更改同一个变量。

答案 1 :(得分:-1)

在C中使用bit twiddling。在交换两个变量之后:

if (a != b) { 
   a ^= b ^= a ^= b;
}