Re: [問題] x^=y ?
※ 引述《LinuxC (死工程師 = = )》之銘言:
: 昨天看到一個題目
: int x=15;
: y=23;
: x^=y^=x^=y;
: 請問x,y的值是多少?
: 我用編譯器去執行
: 結果搞不懂結果怎麼來的
: 我以為是轉成二進位
: 再做位元處理 可是也不是這樣
: 好 我就把它簡化成 x^=y;
: 結果x=24 y=23
: 但我還是不知道怎麼來的
的確是做位元處理啊,
語法上告訴你,這個跟那個位元互斥,結果再跟那個位元互斥...等等.
而且,怎麼敢直接化簡為x^=y? x^=y 的意思是 y 根本沒變過,
但是 x^=y^=x^=y 的 y 變過一次.
x = 15, y = 23
做x^=y,
x = 1111^10111 = 11000 = 24
y = 23
再做y^=x,
x = 24
y = 10111^11000 = 1111 = 15
再做x^=y
x = 11000^1111 = 10111 = 23
y = 15
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.208.175
推
10/24 15:14, , 1F
10/24 15:14, 1F
→
10/24 15:29, , 2F
10/24 15:29, 2F
推
10/24 21:44, , 3F
10/24 21:44, 3F
推
10/24 23:25, , 4F
10/24 23:25, 4F
→
10/24 23:27, , 5F
10/24 23:27, 5F
推
10/24 23:30, , 6F
10/24 23:30, 6F
→
10/24 23:33, , 7F
10/24 23:33, 7F
推
10/24 23:40, , 8F
10/24 23:40, 8F
→
10/24 23:41, , 9F
10/24 23:41, 9F
推
10/24 23:42, , 10F
10/24 23:42, 10F
→
10/24 23:42, , 11F
10/24 23:42, 11F
→
10/24 23:43, , 12F
10/24 23:43, 12F
推
10/24 23:50, , 13F
10/24 23:50, 13F
推
10/25 00:06, , 14F
10/25 00:06, 14F
推
10/25 00:40, , 15F
10/25 00:40, 15F
推
10/25 01:04, , 16F
10/25 01:04, 16F
推
10/25 18:18, , 17F
10/25 18:18, 17F
推
10/27 22:39, , 18F
10/27 22:39, 18F
→
10/28 00:48, , 19F
10/28 00:48, 19F
→
10/28 00:48, , 20F
10/28 00:48, 20F
→
10/28 00:49, , 21F
10/28 00:49, 21F
討論串 (同標題文章)