Re: [問題] 請教如何只用x,y兩變數來交換彼此數值

看板C_and_CPP作者 (喲)時間14年前 (2011/04/11 12:53), 編輯推噓5(503)
留言8則, 6人參與, 最新討論串2/3 (看更多)
※ 引述《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

04/11 21:06, , 1F
會嗎... = =?
04/11 21:06, 1F

04/11 21:07, , 2F
喔!原來如此,感恩!
04/11 21:07, 2F

04/11 21:09, , 3F
你說的情況是用ab為指標時,且ab都指向同一位址才會發生
04/11 21:09, 3F

04/11 21:14, , 4F
所以我覺得a==b應該改成&a==&b才對
04/11 21:14, 4F

04/11 21:17, , 5F
樓上正解
04/11 21:17, 5F

04/11 21:25, , 6F
三樓正解
04/11 21:25, 6F

04/11 21:44, , 7F
對,是同一個變數這樣操作會出狀況 a^=a^=a^=a.
04/11 21:44, 7F

04/11 21:47, , 8F
LOL 沒想過這個情況,完全是個陷阱
04/11 21:47, 8F
文章代碼(AID): #1DeldWEN (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DeldWEN (C_and_CPP)