不借助其他变量,实现两个数进行对调的操作 - xiewenfeng/test GitHub Wiki
有两个整数a和b,在不借助辅助变量的情况下,将两个数字对调。
方法一:逻辑运算,异或操作
a ^= b;
b ^= a;
a ^= b;
将两数异或结果保存在指定的变量a中,此时a的内容被覆盖了,但是却存着a,b的异或关系; a和b异或后再跟a异或,任保一数和它本身异或得0,0和任何数异或是他本身,这样b保存着原来的a值; a还保存着a和b的异或结果,再跟a异或,就是原来的b值了,这样两数就对调了。
方法二:算术运算
(1)借助加法
a = a + b;
b = a - b;
a = a - b;
将两数的求和结果保存在a变量中,这样a的内容就被覆盖了; 两数的求和结果减去原始的b值,就是原值a了,b中保存的是原始a的值,但a还保存着两数的求和结果; 两数的求和结果减去原始的a值,就是原值b了,a中保存的是原始b的值了。 (2)借助减法
a = a - b;
b = a + b;
a = b - a;