`
niunan
  • 浏览: 699710 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

两个整形变量,不用中间变量进行替换!

 
阅读更多
刚刚在看评论的时候发现的,好像觉得有点用吧,先记下来了~

两个整型变量,不用中间变量进行替换。

嚴格的講,這個題目是無解的。
有很多人會有這樣的答案:
int a = ?;
int b = ?;

a=a+b;
b=a-b;
a=a-b;

貌似這樣的代碼沒有什么問題,結果也正確,但如果a+b>Int.MaxValue呢?這一行就會溢出。


嚴格的講,如果不使用第三個變量,是沒辦法完成這個題目的。如果你使用if,則違反了命題,if實際上也使用了第三個變量。

还有些针对上面的评论:
第一种方法:
a^=b;
b^=a;
a^=b;

第二种方法:
b=a+(a=b)*0;

第一种方法我还不知道是什么意思,位运算的不太懂
第二种方法倒是蛮有趣的。呵呵。。又学到一点东西。。。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics