-3

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

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

b=a+b-(a=b) 

或者

a=a+b-(b=a)

两者都是相同的(大约)。如果你知道然后请帮助我。

4

2 回答 2

10

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

a^=b^=a^=b;

但是,它在技术上是错误的,因为它在一个序列点之前不止一次地改变了同一个变量。

于 2013-08-23T04:23:19.803 回答
-1

在 C 中使用位旋转。以下交换两个变量:

if (a != b) { 
   a ^= b ^= a ^= b;
}
于 2013-08-23T04:21:47.630 回答