嵌入式系统开人员C语言测试题编译预处理

上传人:鲁** 文档编号:503851802 上传时间:2023-10-03 格式:DOC 页数:11 大小:31KB
返回 下载 相关 举报
嵌入式系统开人员C语言测试题编译预处理_第1页
第1页 / 共11页
嵌入式系统开人员C语言测试题编译预处理_第2页
第2页 / 共11页
嵌入式系统开人员C语言测试题编译预处理_第3页
第3页 / 共11页
嵌入式系统开人员C语言测试题编译预处理_第4页
第4页 / 共11页
嵌入式系统开人员C语言测试题编译预处理_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《嵌入式系统开人员C语言测试题编译预处理》由会员分享,可在线阅读,更多相关《嵌入式系统开人员C语言测试题编译预处理(11页珍藏版)》请在金锄头文库上搜索。

1、8.1 选择题 (695) 根据编码规范,下面说法正确的是_a_。 a. 可以使用类型定义符typedef重命名用户类型; b. typedef char NAME20; 是正确的定义; c. 可以用宏定义来代替typedef的功能; d. typedef是在预编译时完成的。 (a) (696) 下面关于宏定义的说法正确的是:_abcd_ a. 虽然预处理程序可以用#include指令包含任意一个文件,但最好不要用#include指令包含类型名不是.h的文件,因为这样不容易区分哪些文件是用于编译预处理的; b. 宏表达式及其参数应该使用括号括起来以避免二义性; c. 尽量避免直接在代码中使用数

2、字,应使用有意义的宏定义名字; d. 宏所定义的多条表达式应放在大括号内。 (a.b.c.d) (697) 下面宏定义符合规范的是_d_ a. #define REC_AREA(a, b) a * b; b. #define REC_AREA(a, b) (a * b); c. #define REC_AREA(a, b) (a) * (b); d. #define REC_AREA(a, b) (a) * (b) (d) (698) 以下叙述正确的是_c_。 a. 根据编码规范,在程序的-行上可以出现多个有效的预处理命令行 b. 使用带参的宏时,参数的类型应与宏定义时的一致 c. 宏替换不占

3、用运行时间,只占编译时间 d. 在以下定义中C R是称为宏名的标识符 #define C R 045 (c) (699) 阅读下面程序:_b_ #define LETTER 0 main() char str20=MultiMedia,c; int I; I=0; While(c=strI)!=0) I+; #if LETTER if(c=a&c=A&cy?x:y (a.b.c.d) (704) 在下列有关宏替换的叙述中,正确的说法是_d_。 a. 宏替换占用运行时间 b. 宏名有类型 c. 带参数的宏替换和函数等价 d. 宏替换只是字符替换 (d) (705) 设有以下宏定义:_a_ #de

4、fine N 3 #define Y(n)(N1)*n) 则执行语句:z=2 *(NY(51);后,z的值为 a. 出错 b. 42 c. 48 d. 54 (a) (706) 宏定义#define PI 31.14159中,宏名PI代替_d_。 a. 单精度 b. 双精度 c. 常量 d. 字符串 (d) (707) 编译预处理命令以_d_结尾。 a. ; b. . c. d. 回车 (d) 8.2 填空题 (708) 设有以下宏定义: #define WIDTH 80 #define LENGTH WIDTH+40 则执行赋值语句: v=LENGTH*20;(v为int型变量)后,v的值是

5、_。 (709) 以下程序运行结果是_。 #define DEBUG main() int a=20,b=10,c; c=a/b; #ifndef DEBUG printf(a=%o,b=%o,a,b); #endif printf(c=%dn,c); (710) 设有以下程序,为使之正确运行,请在括号中填入应包含的命令行。其中函数try_me在myfile.h中定义。 _ _ main() printf(n); try_me(); printf(n); (711) 下面程序的运行结果是_: #define MUL(z) (z)*(z) main() printf(%dn,MUL(1+2)+3

6、); (712) 下列程序段的输出是_。 #define f(a, b, x) a*x+b printf(%d, %dn, f(3,2,1), f(6, 5, f(3, 2, 1); (713) 若有以下宏定义:#define STR %d,%c #define A 97 已知字符a的ASCII码值为97,则语句printf(STR,A,A+2);的输出结果为_。 (714) 宏定义有效范围从定义处开始,到本源程序结束处中止。但可以用_来提前解除宏定义的作用。 (715) 下面程序的输出结果是_。 #define FMT %d, main() int b4 = 1,3,5,7,9,11,13,

7、15,17,19,21,23; printf(FMT, *(*(b+1)+1); printf(FMT, b22); 8.3 问答与设计 (716) 下面类型定义语句,哪种方法更好?为什么? #define dPS struct s * typedef struct s * tPS; (717) 头文件中的ifndef/define/endif语句是干什么用的? (718) 判断下面预编译条件语句是否正确,并改正: if (cond = GLRUN) #ifdef DEBUG | (cond = GLWAIT) #endif ) (719) 判断下面预编译条件语句是否正确,并改正: #defi

8、ne INIT_RECT_VALUE(a, b) a = 0; b = 0; (720) 用typedef定义一个文件指针FP。 (721) 假如使用了禁止在while的条件部分进行赋值的编译程序选择项,为什么可以查出下面代码中的运算优先级错误? While(ch = getchar() != EOF) (722) 怎样使用编译程序查出下面无意使用的空语句和赋值语句? a. if (nCome = 063)。这里程序的本意是十进制63判断,但因为前面多了一个0使063成了八进制数。结果变成了51。 b. If(pb != NULL & pb != 0xff)。这里不小心把&键入为&,结果即使p

9、b等于NULL还会执行*pb != 0xff。 c. quot = numer/*pdenom。这里无意间多了个*号结果使/*被解释为注释的开始。 d. word = bHigh8 + bLow。由于出现了运算优先级错误,该语句被解释成了:word = bHigh 65535U #endif 怎样使预处理程序报告出这一错误? (725) 什么是宏(macro)?使用宏有哪些好处? (726) 请说明有参宏和有参函数的区别。 (727) 请说明宏定义的有效范围。 (728) 文件包含的优点是什么? (729) 请写出条件编译的宏命令。 (730) 指针作为函数参数时能够改变实参的值,请说明其原理

10、。 (731) 使用宏更好,还是使用函数更好? (732) 什么时候应该用宏代替函数? (733) 怎样建立对类型不敏感的宏? (734) 什么是标准预定义宏? (735) 怎样取消一个已定义的宏? (736) 预处理程序(preprocessor)有什么作用? (737) 什么是标准预定义宏? (738) 标准预定义宏_FILE_有什么作用? (739) 标准预定义宏_LINE_有什么作用? (740) 标准预定义宏_DATE_和_TIME_有什么作用? (741) 怎样才能使程序打印出发生错误的行号? (742) 怎样才能使程序打印出发生错误的源文件名? (743) 怎样判断一个程序是用C编译程序还是用C+编译程序编译的? (744) 怎样避免多次包含同一个头文件? (745)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号