[問題] 巨集的邊際效應問題
遇到的問題: (題意請描述清楚)
#define PLUS(a, b) a+b
#define MINUS(a, b) a-b
#include <stdio.h>
main()
{ int m1 = 3, m2 = 5;
m1 = PLUS(m1, m2)*MINUS(m2, m1);
printf(“%d\n”, m1);
}
希望得到的正確結果:
正確答案為25
自已的想法是 m1 = 8 * 2 = 16 又或 m1 = 8 * -3 = -24
在程式最後在印出m2的值一樣是5,所以真的搞不懂為什麼執行後的
答案會是25,不知道實際執行時m1這條式子是展開成什麼樣式~
再麻煩各位指教了,感謝
開發平台: Dev-C++
--
阿嬤說:「人生不是得到,就是學到。」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.187.52.246
推
06/17 20:11, , 1F
06/17 20:11, 1F
→
06/17 20:19, , 2F
06/17 20:19, 2F
推
06/17 20:22, , 3F
06/17 20:22, 3F
推
06/17 20:44, , 4F
06/17 20:44, 4F
→
06/17 20:48, , 5F
06/17 20:48, 5F
推
06/17 20:53, , 6F
06/17 20:53, 6F
→
06/17 20:58, , 7F
06/17 20:58, 7F
→
06/17 20:59, , 8F
06/17 20:59, 8F
抱歉~~算到腦筯發燒了~~一時氣話~請勿見怪~~~
另~再請問一題~再請指教~~
#include <stdio.h>
#define MAX(a, b) (a < b ? b : a)
#define PRINT1(x) printf(“%d”, x)
#define PRINT3(x, y, z) PRINT1(x), PRINT1(y), PRINT1(z)
main()
{
int m1 = 1, m2 = 3;
PRINT3( MAX( m1++, --m2), m1, m2);
}
解答為 1 2 1
第一個「1」是2 < 2 ? m2 : m1 所以答案是1.....是這樣沒錯吧??
第二個「2」是因為m1++所以m1的值變為2
第三個就是問題了.....怎麼m2的值變為1了,不是才減1次嗎,難道
後面的m2也以--m2代換了
抱歉各位大大了~~小弟EQ不佳~~再請海函~~
※ 編輯: saka037 來自: 218.187.52.246 (06/17 21:07)
推
06/17 21:09, , 9F
06/17 21:09, 9F
→
06/17 21:13, , 10F
06/17 21:13, 10F
推
06/17 21:16, , 11F
06/17 21:16, 11F
→
06/17 21:16, , 12F
06/17 21:16, 12F
→
06/17 21:16, , 13F
06/17 21:16, 13F
→
06/17 21:34, , 14F
06/17 21:34, 14F
→
06/17 21:34, , 15F
06/17 21:34, 15F
→
06/17 21:36, , 16F
06/17 21:36, 16F
推
06/17 22:45, , 17F
06/17 22:45, 17F
推
06/17 22:47, , 18F
06/17 22:47, 18F
推
06/18 02:52, , 19F
06/18 02:52, 19F
C_and_CPP 近期熱門文章
11
46
PTT數位生活區 即時熱門文章