[問題] 印出問題

作者: ooww (另外一個我)   2021-02-08 16:11:01
開發平台(Platform): (Ex: Win10, Linux, ...)
WIN10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
C COMOILER EXPLORE
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
為什麼答案是 -3
餵入的資料(Input):
預期的正確結果(Expected Output):
我覺得應該 36
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
補充說明(Supplement):
https://imgur.com/a/PzhmGN5
抱歉 修正一下
-36 改成 36
誠心發問 請教各位神人碼農大大
問題一: 為何a-b 是 5 + 3 - 5 - 3
而不是 5 + 3 -(5 + 3) ?
問題二: 為何計算方式是 5 + 3 - 5 - 3 * 3 - 5 + 3 + 5
而不是(5 + 3 - 5 - 3)*(3 - 5 + 3 + 5) ?
作者: NciscalA   2021-02-08 17:10:00
因為黑板那個範例的 macro 定義裡面沒有括號,所以取代後也不會有括號
作者: MOONRAKER (㊣牛鶴鰻毛人)   2021-02-08 17:11:00
macro不是function call 參數不會先計算再傳進去macro就是這樣
作者: peterbrucele (DM5)   2021-02-08 18:09:00
macro功用只是單純的文字展開 你想的太複雜了
作者: Lipraxde (Lipraxde)   2021-02-08 18:10:00
編譯時下 -E 可以看 preprocessed 做完後的結果-or,這自動選字 Orz
作者: loveme00835 (髮箍)   2021-02-08 20:12:00
你知道巨集(macro)是什麼東西嗎?# 開頭的是前處理器 (preprocessor) 指令, #include是 include directive, #define 則是定義巨集https://bit.ly/3ryVARM"前"處理是在編譯程式碼"以前"做些文字替換等工作;相較執行時期的計算, 能達成的功能有限不會下 command line option.. 你都是開瀏覽器寫程式嗎? = =
作者: Schottky (順風相送)   2021-02-09 00:02:00
原 PO 的前一篇是用瀏覽器寫程式沒錯如果有 PC 的話建議可以裝個免費的 Code::Blocks
作者: kaneson (Lance)   2021-02-09 09:56:00
巨集只是文字替換,不會自動生括號

Links booklink

Contact Us: admin [ a t ] ucptt.com