当前位置: 代码迷 >> C语言 >> 一道面试题 很有意思请留笔
  详细解决方案

一道面试题 很有意思请留笔

热度:43   发布时间:2008-04-04 23:11:57.0
很好@@@
----------------解决方案--------------------------------------------------------
借用太阳兄弟的例子
(a = 20)     == 00010100;
(b = 25)     == 00011001;

(a = a ^ b)  == 00001101;
(b = b ^ a)  == 00010100;//b=b^a'=b^a^b=a
(a = a ^ b)  == 00011001;//a=a'^b'=a^b^a=b
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
大学里学过的,老师跟我们说过

不过我没这个习惯~
----------------解决方案--------------------------------------------------------
很经典
很经典,以前只会第一种,没想到还可以用异或对整型进行交换
----------------解决方案--------------------------------------------------------
a=a+b;
b=a-b;
a=a-b;
  小弟是菜鸟...能不能说的清楚 点
----------------解决方案--------------------------------------------------------
这种方法并不好。如果 a + b 超出了 a 这种数据能够表示的范围呢
a=a+b;
b=a-b;
a=a-b;

int a = INT_MAX;
int b = 8;
a=a+b;
b=a-b;
a=a-b;
----------------解决方案--------------------------------------------------------
  相关解决方案