看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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) ? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.166.75.241 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1612771864.A.3D6.html ※ 編輯: ooww (218.166.75.241 臺灣), 02/08/2021 16:22:23 https://imgur.com/a/u2pRQ0D 改成這樣就能得到我預期的答案 但還是很納悶原本的怎麼不行 ※ 編輯: ooww (218.166.75.241 臺灣), 02/08/2021 16:26:27
NciscalA: 因為黑板那個範例的 macro 定義裡面沒有括號,所以取代 02/08 17:10
NciscalA: 後也不會有括號 02/08 17:10
MOONRAKER: macro不是function call 參數不會先計算再傳進去 02/08 17:11
MOONRAKER: macro就是這樣 02/08 17:13
peterbrucele: macro功用只是單純的文字展開 你想的太複雜了 02/08 18:09
拿嚕吼抖 感謝大大
Lipraxde: 編譯時下 -E 可以看 preprocessed 做完後的結果 02/08 18:10
Lipraxde: -or,這自動選字 Orz 02/08 18:11
痾...看不太懂怎麼弄 方便大大可以截圖標示一下嗎?
loveme00835: 你知道巨集(macro)是什麼東西嗎? 02/08 20:12
#include< > 跟 #define 就是巨集吧? ※ 編輯: ooww (122.121.119.23 臺灣), 02/08/2021 21:09:53
loveme00835: # 開頭的是前處理器 (preprocessor) 指令, #include 02/08 21:39
loveme00835: 是 include directive, #define 則是定義巨集 02/08 21:39
loveme00835: https://bit.ly/3ryVARM 02/08 21:39
loveme00835: "前"處理是在編譯程式碼"以前"做些文字替換等工作; 02/08 21:45
loveme00835: 相較執行時期的計算, 能達成的功能有限 02/08 21:45
loveme00835: 不會下 command line option.. 你都是開瀏覽器寫程式 02/08 22:25
loveme00835: 嗎? = = 02/08 22:25
痾...對 只是測試講義上例題而已
Schottky: 原 PO 的前一篇是用瀏覽器寫程式沒錯 02/09 00:02
Schottky: 如果有 PC 的話建議可以裝個免費的 Code::Blocks 02/09 00:03
感謝建議 ※ 編輯: ooww (1.173.78.26 臺灣), 02/09/2021 01:27:19
kaneson: 巨集只是文字替換,不會自動生括號 02/09 09:56