[问题] 印出问题

楼主: 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