作者steter ()
看板TransCSI
标题Re: [问题] 程式
时间Wed Dec 26 22:47:00 2007
※ 引述《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)