细节决定成败

如果不引入第三个变量,你还有几种方法交换ab两个数?

int a=10;
int b=20;
怎么交换a,b?

文章目录

  • ​​1.引入临时变量temp(引入第三变量)​​
  • ​​2.a+b法(不引入第三变量)​​
  • ​​3.a^b法(不引入第三变量)​​

1.引入临时变量temp(引入第三变量)

优点:便于理解,推荐使用

int temp=a;
a=b;
b=temp;

2.a+b法(不引入第三变量)

缺陷:加法在二进制运算中,当a,b数值本来就比较大时,可能进位,就会造成溢出

a=a+b;
b=a-b;
a=a-b;

🍉运算步骤:

【C两数交换】实现ab交换居然有三种方法?_c语言


🍉运行结果:

【C两数交换】实现ab交换居然有三种方法?_开发语言_02

3.a^b法(不引入第三变量)

想详细了解异或^,请移步​​位运算​​

较第一种方法缺点:难理解
较第二种方法优点:不会进位,不会溢出

a=a^b;
b=a^b;
a=a^b;

🍉运算步骤:

【C两数交换】实现ab交换居然有三种方法?_开发语言_03


🍉运行结果:

【C两数交换】实现ab交换居然有三种方法?_开发语言_04

🍉方法二和方法三相似点和记忆:左侧都依次是aba

【C两数交换】实现ab交换居然有三种方法?_二进制运算_05