看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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