[問題] C語言運算子

看板C_and_CPP (C/C++)作者 (cpd)時間16年前 (2010/06/26 22:47), 編輯推噓0(0013)
留言13則, 3人參與, 最新討論串1/1
想請問大家一個運算子的問題: #include <stdio.h> main() { int x=3, y=1, z=3; printf("%d\n", x ^ ~ y & - z); } 輸出:-3 請問要怎麼計算呢?謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.160.244.1

06/26 22:49, , 1F
你需要的是運算子優先順序表....XD
06/26 22:49, 1F


06/26 22:58, , 3F
是說,根據那張表,算出來應該是 -1 才對耶 XD
06/26 22:58, 3F

06/26 23:02, , 4F
所以原 PO 用的 compiler 是...?
06/26 23:02, 4F

06/26 23:04, , 5F
疑?? 不是-3嗎?_?
06/26 23:04, 5F

06/26 23:06, , 6F
啊, 是我自己算錯了, 手算的確是 -1 ....Orz
06/26 23:06, 6F

06/26 23:07, , 7F
我用程式跑了一遍,又手算確認一次 XD
06/26 23:07, 7F

06/26 23:08, , 8F
剛貼到 DevC++去跑, 也是 -1 :)
06/26 23:08, 8F

06/26 23:08, , 9F
很容易沒注意到兩個&(addr與bitand)的precedence不同 :P
06/26 23:08, 9F

06/26 23:09, , 10F
真的很好奇是什麼 compiler 算 -3 (LOL)
06/26 23:09, 10F

06/26 23:09, , 11F
其實我是猜到&比^先的, 然後在算0x3 ^ 0xFFFC時想錯XD
06/26 23:09, 11F

06/26 23:11, , 12F
再補VC2005的結果, 也是-1....:)
06/26 23:11, 12F

06/26 23:22, , 13F
啊…是我看錯解答,答案真的是-1,抱歉@@ 謝謝你們~
06/26 23:22, 13F
文章代碼(AID): #1C9XCJqt (C_and_CPP)
文章代碼(AID): #1C9XCJqt (C_and_CPP)