您的位置:首页 > 编程语言 > C语言/C++

C/C++/Java不使用临时变量实现两个数的交换

2015-03-25 15:18 417 查看
方法一、加减减

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: