作者yauhh (喲)
看板C_and_CPP
標題Re: [問題] 請教如何只用x,y兩變數來交換彼此數值
時間Mon Apr 11 20:53:48 2011
※ 引述《sjgau (sjgau)》之銘言:
: int a, b;
: a= 123; b= 456;
: a^= b^= a^= b;
: // 只要 一行指令,不需要使用第三個變數,
: 即可達到 目的。
: 請問:為什麼?
: ※ 引述《ballgi (環給一個幸福)》之銘言:
: : 不好意思,我想請教一個問題
: : x=1
: : y=2
: : 如果不用第三個變數就能轉換彼此的數值為
: : x=2
: : y=1
: : 我不知道可以這樣作耶,請問誰能指導我,謝謝
: : 在此感謝鄉民提供的智慧
當 a == b 時, a ^ b ===> 0, 會把這局破掉.
所以起碼應該寫成:
a == b? 1 : (a ^= b ^= a ^= b);
--
/yau
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.227.202
推 Ebergies:會嗎... = =? 04/11 21:06
推 sjgau:喔!原來如此,感恩! 04/11 21:07
→ TsinTa:你說的情況是用ab為指標時,且ab都指向同一位址才會發生 04/11 21:09
→ TsinTa:所以我覺得a==b應該改成&a==&b才對 04/11 21:14
推 AstralBrain:樓上正解 04/11 21:17
推 ledia:三樓正解 04/11 21:25
→ yauhh:對,是同一個變數這樣操作會出狀況 a^=a^=a^=a. 04/11 21:44
推 Ebergies:LOL 沒想過這個情況,完全是個陷阱 04/11 21:47