※ 引述《forris (喬巴)》之銘言:
: 1. #define DOUBLE(x) 2*x
: #define PRINT(int) printf("int=%d\n",int)
: #include <stdio.h>
: main()
: {
: int m1=1,m2=2;
: m1=DOUBLE(m1+m2);
: PRINT(m1);
: }
: 問程式輸出為何?
: (a) m1=5 (b) m1=8 (c) int=5 (d)int=8
: 為什麼是 c 而不是 d?
巨集是用copy程式碼的方式去執行
所以double(m1+m2)的結果是
2*m1+m2
如果想達到你的結果 程式碼最好這樣寫:m1=DOUBle((m1+m2))
這樣的結果才是 2*(m1+m2)
: 2. #include <stdio.h>
: main()
: {
: int m1=123,m2=5;
: do {m1%=m2;} while(m2--);
: printf("%d\n",m1);
: }
: 問程式輸出為何?
: (a)0 (b)1
: (c)本程式編譯時,complier 發出錯誤訊息,不能執行而無輸出結果產生
: (d)本程式執行時,發生錯誤,故無輸出結果產生
因為m2會出現0的情形
因此m1%m2就會出現除於0的情形
除於0就會出現執行錯誤
: 為什麼是 d ? 難道是 while 的敘述要是 boolean type?
我也是考四等資訊處理的考生
--
衝個人氣吧
http://www.wretch.cc/album/steter2002
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.170.237
※ 編輯: steter 來自: 218.167.170.237 (12/26 22:49)
※ 編輯: steter 來自: 218.167.170.237 (12/26 22:55)