




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、习惯,&好的编程风格来提高可读性,在一些关键复杂算法处则应清晰的加上 注释。在hello.c中的注释/*这是一个hello word程序*/在预处理后被删除掉了。文件包含:包含程序需要的所有文件。C语言中使用#include,这是预处理器的 指令,告诉预处理器包含指定文件的内容。例如#include将告诉预处理器将 stdio.h中所有的内容包含进来。也可以使用双引号-Pinchuk “stdio.h”注意:如 果使用尖括号,则在编译器包含路径中搜索文件。如果文件名用双引号包起来, 则搜索路径将扩展为除了编译器包含路径外的当询U录下。宏展开替换:比如上例中宏STR在预处理时就被展开替换了。宏有
2、两种常见形 式:大致说明了宏的工作原理,来看看一些常见的面试问题:不带参形式(有的地方也称对象形式object-like)。#define PI 3.1415926f带参形式(有的地方也称为函数形式function-like)。#define SQUARE(x) (x)*(x)面试问题1如下代码,问有多少个“嵌入式”会被打印?(A) 1(B) 3(C) 4(D) 编译错误btcliule define PRINTJiELLOd times) do if (i+ times) printf(嵌入式n”); continue: )while(l)int inainOPRINT_HELLO(0, 3
3、); return 0;答案:D解析:PRINT.HELLO宏在预处理器时被扩展。宏展开后,if表达式变为:if(0 +3) O 0是一个常数,常数如何自增呢?,W此应用增量运算符会产生编译 时错误。面试问题2下述代码的输出是什么?(A) 3(B) 5(C) 3或者5取决于X的值(D) 编译错误#include #if A H 3#define B 3#else#define B 5#endifint inainOPrintfC%d, B); return 0;答案:B解析:乍一看,输出似乎是编译时错误,因为尚未定义宏A,所以A是不等于 3的,所以会将B定义为5。你如不信,也可以用上面的办法g
4、cc -E heliox -o hello.i来验证,或者编译运行一遍。面试问题3问:针对下述代码,哪个答案正确?(A) 嵌入式(B) zuomu(C) 编译错误(D) 运行错误#include #define X 3 #if !Xprintf(嵌入式”); #elsep rintfCzuomu); #endif int inainOreturn 0;答案:C编译错误解析:程序编译三部曲:预处理、汇编、链接,那么在预处理时,上述代码就变成下面这样:荐这里还有stdbh的包含内容 P rintf(zuomu);int inainOreturn 0;prinlf在main外面被调用了,所以编译会出
5、错。 面试问题4下述代码的输出应该是?(A) 嵌入式(B) zuomu(C) 嵌入式或客栈(D) 编译错误include define IS_EQUAL(X. Y)X=Y int inainO带f 1S_EQUAL(X 0) prinlf(嵌入式”);elsep rintf(zuomu);return 0;答案:A解析:条件宏#ifIS_EQUAL(X.O)扩展为#ifX=O。预处理结束后,所有未定义 的宏均使用默认值0初始化。面试问题5下述代码的输出应该是?(A) 20(B) 2000(C) o(D) 编译错误#include #define SQUARE(x) x*x int inainO
6、int X;x = 2000/SQUARE(10); prinlf(”d“,x);return 0;答案:B解析:预处理器用10*10替换SQUARE(W),表达式变为x = 2000/10* 10, x 的值计算为2000。如前所说,应定义如下:define SQUARE(x)面曲可题6下述代码的输出应该是?(A) 编译错误(B) %s Embedded Inn(C) Embedded Inn(D) %s Embedded Inn Embedded Inn# include # define scanf %s Embedded Inn * int inainOprintf(scanf, sc
7、anf); return 0;答案:D解析:在编译的预处理阶段之后,prinf语句将变为。 printf(“s Embedded Inn”,Embedded Inn”);面试问题7下述代码的输出应该是?(A) 编译错误(B) 嵌入式zuoinu(C) zuoinuzuoinu(D) 嵌入式嵌入武#include #define STR ”嵌入式“ int inainOprintf(%sSTR);#define STR zuomuprintf(*%s,STR); return 0:答案:B解析:如果重新定义预处理程序指令,则预处理器不会给出任何错误,它可能 会发出警告。预处理器在使用之前获取新值
8、,并将其替换。面试问题8下述代码的输出应该是?(A) 100(B) 编译错误(C) 0(D) l#include#define ADHESION(x,y) x#y int inainOint varl = 100;printf(%d ADHESION(varJ); return 0;答案:A解析:运算符#称为“令牌粘贴(Token-Pasting) ”或哈并(Merge) ”运算符。 它将两个符合合并为一个。因此在预处理之后,printf变为。printf(*%d varl);面试问题9下述代码的输出应该是?(A) 6666.6(B) 666.6(C) 编译错误(D) 无效值#include
9、#define MAX 6666.6f int inainOfloat MAX = 666.6; printf(%f MAX); return 0;答案:C解析:展开一看便知。int inainOfloat 6666.6 = 666.6; 常数不可为左值 printf(%d 6666.6);return 0;面试问题10下述代码的输出应该是?(A) 编译错误(B) 嵌入式客栈(C) MAIN(D) main#include #define macro(n, a, i, m) in#a#i#n#define MAIN inacro(n, a, i, m)int MAINOprinlf(嵌入式客栈”);return 0;答案:B解析:不注意可能会选A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司行政公文财务商务等事务知识测试卷
- 辽宁省阜新市第四中学2024-2025学年八年级下学期4月月考生物试题
- 甘南顶管施工方案
- 2025江苏省合同法规定重大疾病医疗补助范围江苏省合同法
- 2025年国家公务员考试时事政治必考试题库及答案
- 作风问题谈心谈话记录内容
- 电子琴培训课件
- 高三试卷:2025重庆康德半期考试政治
- 麻醉药品考试题(含答案)
- 项目组内部通讯录及任务分配表
- 2024-2030年中国过敏性鼻炎药物行业市场发展趋势与前景展望战略分析报告
- 浙江省温州市“摇篮杯”2022-2023学年高一下学期化学竞赛试卷 含解析
- 24年追觅在线测评28题及答案
- 智能建造施工技术 课件 项目1 智能建造施工概论;项目2 土方工程;项目3 基础工程
- 部编版二年级语文上册《植物妈妈有办法》教学课件2篇21
- 情侣解除关系的协议书
- 精神卫生防治业务技能竞赛理论试题及答案
- 中译版 欧洲规范8 结构抗震设计 第二部分 桥梁
- 幼儿园大班语言《鹅大哥出门》课件
- 品质异常处理流程培训
- 《陆上风电场工程概算定额》NBT 31010-2019
评论
0/150
提交评论