[問題] 呼叫函式的數值

看板C_and_CPP作者 (PT鄉民)時間10年前 (2014/03/08 21:10), 編輯推噓2(2010)
留言12則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 跟預算的數值不一樣 餵入的資料(Input):預期的正確結果(Expected Output): 36 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) #define p(a,b) a-b #define m(a,b) a+b #include <stdio.h> #include <stdlib.h> int main(){ int m1=5, m2=3; m1=p(m1+m2,m1-m2)*m(m2-m1,m2+m1); printf("%d",m1); system ("pause"); } 為何輸出不是36 而是-3 ? 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.27.124.84

03/08 21:19, , 1F
這是marco問題 a-b => ((a)-(b))
03/08 21:19, 1F

03/08 21:19, , 2F
5+3-5-3*3-5+3+5 <-- 你的marco定義的結果
03/08 21:19, 2F
那這樣的話,有要考慮優先順序問題?? 但是不是兩個函式式分開的嗎??在最後相乘? ※ 編輯: APE36 來自: 114.27.124.84 (03/08 21:38)

03/08 21:43, , 3F
你先去看看甚麼是marco吧=A=
03/08 21:43, 3F

03/08 23:16, , 4F
marco不是函式(function)
03/08 23:16, 4F

03/09 01:01, , 5F
別用marco害死自己了
03/09 01:01, 5F

03/09 03:05, , 6F
...差點以為我的英文老師請假了 @@ 那個字應該拼做 macro 吧
03/09 03:05, 6F

03/09 04:04, , 7F
為什麼int 不用return? (亂入XD)
03/09 04:04, 7F

03/09 04:06, , 8F
認真回應:一個是呼叫,一個是置換(應該是這樣稱呼?)?
03/09 04:06, 8F

03/09 04:07, , 9F
所以先搞清楚function跟macro是什麼吧
03/09 04:07, 9F

03/09 12:31, , 10F
我本來也打 macro 看到四樓才改...
03/09 12:31, 10F

03/10 21:15, , 11F
拼錯字, 我真糟糕
03/10 21:15, 11F

03/11 15:49, , 12F
錯字抱歉@@
03/11 15:49, 12F
文章代碼(AID): #1J6nRJHY (C_and_CPP)