作者forris (喬巴)
看板TransCSI
標題[問題] 程式
時間Wed Dec 26 12:44:39 2007
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?
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)本程式執行時,發生錯誤,故無輸出結果產生
為什麼是 d ? 難道是 while 的敘述要是 boolean type?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.194.99
推 MrTang:第一題我用COMPILER去跑是INT=4耶... 12/26 15:49
推 MrTang:怪怪.... 12/26 15:55
推 MrTang:第二題我也是跟你想的一樣.... 12/26 15:57
→ MrTang:因為WHILE裡面是做條件判斷... 12/26 15:58
推 alanpin:第一題:2*1+2=4 解題關鍵:define只是作"展開"的動作 12/26 17:03
→ ccler:5對,4也對,看compile而定 12/26 18:24