不使用第三个变量,交换两个变量的值
2020-09-13 本文已影响0人
溪桥星雨
看到题目的时候愣了下,很快就有了思路。两个变量还能玩出什么花样?
int a = 8;
int b = 4;
a = a + b;//求和保存在a
b = a - b;//和-b得到原来的a赋值到b,交换一个了。
a = a - b;//现在的b是原来的a了,和-b就会得到原来的b,赋值给a完成交换
printf("a= %d, b = %d\n",a,b);
运行结果:a= 4, b = 8
这种方式存在溢出的问题。那么可以采用另外一种方式:
int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d\nb=%d\n", a,b);
运行结果:a= 20, b = 10