方法一、加减减
a = a + b;
b = a - b;
a = a - b;
方法二、异或运算(只能用于整数)
a = a ^ b;
b = a ^ b;
a = a ^ b;
方法一好理解,加加减减就出来了,关于方法二,个人目前还不是很理解,如果有懂数学证明的不妨留言交流一下。异或运算就是将十进制数转换成二进制后,同位相同则取0,同位相异则取1。
只举例说明一下:
int a = 2 ; 0010
int b = 9; 1001
a = a ^ b ; 0010
^ 1001
a = 1011
b = a ^ b; 1011
^ 1001
b = 0010 = 2
a = a ^ b; 1011
^ 0010
a = 1001 = 9
本文介绍两种不借助额外变量实现两个整数交换的方法:加减法与异或运算。加减法通过连续的加减操作达到目的;异或法则利用位运算特性,适用于整数类型。
7248

被折叠的 条评论
为什么被折叠?



