已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统程序设计嵌入式系统程序设计 大连理工大学软件学院大连理工大学软件学院 嵌入式系统工程系嵌入式系统工程系 赖晓晨赖晓晨 嵌入式嵌入式C程序设计测试题程序设计测试题 ?以下试题从各个角度考察了你是否具备 嵌入式 以下试题从各个角度考察了你是否具备 嵌入式C程序员需要知道的各种知识。程序员需要知道的各种知识。 题目题目1 ?用预处理指令用预处理指令#define 声明一个常 数,用以表明一年中有多少秒(忽略闰 年问题) 声明一个常 数,用以表明一年中有多少秒(忽略闰 年问题) 题目题目1分析分析 ? #define 语法的基本知识(例如:不能 以分号结束,括号的使用,等等) 语法的基本知识(例如:不能 以分号结束,括号的使用,等等) ? 懂得预处理器将为你计算常数表达式的 值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清 晰而没有代价的。 懂得预处理器将为你计算常数表达式的 值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清 晰而没有代价的。 ? 意识到这个表达式将使一个意识到这个表达式将使一个16位机的整型 数溢出 位机的整型 数溢出-因此要用到长整型符号因此要用到长整型符号L,告诉编译 器这个常数是的长整型数。 告诉编译 器这个常数是的长整型数。 题目题目1答案答案 ?用预处理指令用预处理指令#define 声明一个常 数,用以表明一年中有多少秒(忽略闰 年问题) 声明一个常 数,用以表明一年中有多少秒(忽略闰 年问题) #define SECONDS_PER_YEAR 31536000UL 题目题目2 ?写一个写一个标准标准宏宏MIN ,这个宏输入两 个参数并返回较小的一个。 ,这个宏输入两 个参数并返回较小的一个。 题目题目2分析分析 ? 标识标识#define在宏中应用的基本知识。这是很重 要的。因为在 在宏中应用的基本知识。这是很重 要的。因为在inline操作符变为标准操作符变为标准C的一部分之 前,宏是方便产生嵌入代码的唯一方法 的一部分之 前,宏是方便产生嵌入代码的唯一方法 ? 条件操作符的知识。这个操作符存在条件操作符的知识。这个操作符存在C语言中的原 因是它使得编译器能产生比 语言中的原 因是它使得编译器能产生比if-then-else更优化 的代码,了解这个用法是很重要的。 更优化 的代码,了解这个用法是很重要的。 ? 懂得在宏中小心地把参数用括号括起来懂得在宏中小心地把参数用括号括起来 ? 了解宏的副作用,例如:当你写下面的代码时会发了解宏的副作用,例如:当你写下面的代码时会发 生什么事?生什么事? least = MIN(*p+, b); 源程序源程序 main() int a=1;int b; if(a=1) b=1; else b=0; 5: if(a=1) 0040104F cmpdword ptr ebp-4,1 00401053 jnemain+2Eh (0040105e) 6: b=1; 00401055 movdword ptr ebp-8,1 7: else 0040105C jmpmain+35h (00401065) 8: b=0; 0040105E movdword ptr ebp-8,0 Vc6编译 源程序源程序 main() int a=1;int b; b=(a=1)?1:0); 5: b=(a=1)?1:0); 0040104F xoreax,eax 00401051 cmpdword ptr ebp-4,1 00401055 seteal 00401058 movdword ptr ebp-8,eax Vc6编译 题目题目2答案答案 ?写一个写一个标准标准宏宏MIN ,这个宏输入两 个参数并返回较小的一个。 ,这个宏输入两 个参数并返回较小的一个。 #define MIN(A,B) (A) = (B) ? (A) : (B) 题目题目3 ?嵌入式系统中经常要用到无限循环,你 怎么样用 嵌入式系统中经常要用到无限循环,你 怎么样用C编写死循环呢?编写死循环呢? 题目题目3分析分析 1. while(1) 2. for(;) 3. Loop: . goto Loop; 题目题目4 ? 用变量用变量a给出下面的定义给出下面的定义 ?一个整型数一个整型数 ?一个指向整型数的指针一个指向整型数的指针 ?一个指向指针的的指针,它指向的指针是指向一个整型数一个指向指针的的指针,它指向的指针是指向一个整型数 ?一个有一个有10个整型数的数组个整型数的数组 ?一个有一个有10个指针的数组,该指针是指向一个整型数的。个指针的数组,该指针是指向一个整型数的。 ?一个指向有一个指向有10个整型数数组的指针个整型数数组的指针 ?一个指向函数的指针,该函数有一个整型参数并返回一个整型 数 一个指向函数的指针,该函数有一个整型参数并返回一个整型 数 ?一个有一个有10个指针的数组,该指针指向一个函数,该函数有一 个整型参数并返回一个整型数 个指针的数组,该指针指向一个函数,该函数有一 个整型参数并返回一个整型数 题目题目4答案答案 ? int a; ? int *a; ? int *a; ? int a10; ? int *a10; ? int (*a)10; ? int (*a)(int); ? int (*a10)(int); 题目题目5 ?关键字关键字static的作用是什么?的作用是什么? 题目题目5答案答案 ? 在在C语言中,关键字语言中,关键字static有三个明显的作用:有三个明显的作用: ?在函数体,一个被声明为静态的变量在这一函数被调用过 程中维持其值不变。 在函数体,一个被声明为静态的变量在这一函数被调用过 程中维持其值不变。 ?在模块内(但在函数体外),一个被声明为静态的变量可 以被模块内所用函数访问,但不能被模块外其它函数访 问。它是一个本地的全局变量。 在模块内(但在函数体外),一个被声明为静态的变量可 以被模块内所用函数访问,但不能被模块外其它函数访 问。它是一个本地的全局变量。 ?在模块内,一个被声明为静态的函数只可被这一模块内的 其它函数调用。那就是,这个函数被限制在声明它的模块 的本地范围内使用。 在模块内,一个被声明为静态的函数只可被这一模块内的 其它函数调用。那就是,这个函数被限制在声明它的模块 的本地范围内使用。 ? 不懂第三个答案是一个严重的缺点,这涉及到本地 化数据和代码范围的好处和重要性。 不懂第三个答案是一个严重的缺点,这涉及到本地 化数据和代码范围的好处和重要性。 题目题目6 ?关键字关键字const有什么含意?有什么含意? 题目题目6分析分析 const int a; int const a; const int *a; int * const a; const int * const a; 题目题目7 ?关键字关键字volatile有什么含意有什么含意?并给出三 个不同的例子。 并给出三 个不同的例子。 题目题目7分析分析 ?一个定义为一个定义为volatile的变量是说这变 量可能会被意想不到地改变,这样,编 译器就不会去假设这个变量的值了。精 确地说就是,优化器在用到这个变量时 必须每次都小心地重新读取这个变量的 值,而不是使用保存在寄存器里的备 份。 的变量是说这变 量可能会被意想不到地改变,这样,编 译器就不会去假设这个变量的值了。精 确地说就是,优化器在用到这个变量时 必须每次都小心地重新读取这个变量的 值,而不是使用保存在寄存器里的备 份。 题目题目7答案答案 ?并行设备的硬件寄存器(如:状态寄存并行设备的硬件寄存器(如:状态寄存 器)器) ?一个中断服务子程序中会访问到的非自一个中断服务子程序中会访问到的非自 动变量动变量(Non-automatic variables) ?多线程应用中被几个任务共享的变量多线程应用中被几个任务共享的变量 题目题目7扩展扩展 ? 一个参数既可以是一个参数既可以是const还可以是还可以是volatile 吗?为什么。吗?为什么。 ? 一个指针可以是一个指针可以是volatile 吗?为什么。吗?为什么。 ? 下面的函数能返回下面的函数能返回ptr指向对象的平方吗?指向对象的平方吗? int square(volatile int *ptr) return *ptr * *ptr; 题目题目7扩展答案扩展答案 ?既可以是既可以是const还可以是还可以是volatile的 一个例子是只读的状态寄存器。它是 的 一个例子是只读的状态寄存器。它是 volatile因为它可能被意想不到地改 变。它是 因为它可能被意想不到地改 变。它是const因为程序不应该试图 去修改它。 因为程序不应该试图 去修改它。 ?指针可以是指针可以是volatile的一个例子是当 一个中断服务子程序修改一个指向一个 的一个例子是当 一个中断服务子程序修改一个指向一个 buffer的指针时。的指针时。 题目题目7扩展答案(续)扩展答案(续) ?如果这段代码的目的是用来返指针如果这段代码的目的是用来返指针 *ptr指向值的平方,可能会得不到期 望值,因为编译器将产生类似下面的代 码: 指向值的平方,可能会得不到期 望值,因为编译器将产生类似下面的代 码: int square(volatile int *ptr) int a,b; a = *ptr; b = *ptr; return a * b; 题目题目7扩展答案(续)扩展答案(续) ?正确的应该这样:正确的应该这样: long square(volatile int *ptr) int a; a = *ptr; return a * a; 题目题目8 ?嵌入式系统总是要用户对变量或寄存器 进行位操作。给定一个整型变量 嵌入式系统总是要用户对变量或寄存器 进行位操作。给定一个整型变量a,写 两段代码,第一个设置 ,写 两段代码,第一个设置a的的bit 3,第 二个清除 ,第 二个清除a 的的bit 3。在以上两个操作 中,要保持其它位不变。 。在以上两个操作 中,要保持其它位不变。 题目题目8答案答案 ?用用 #defines 和和 bit masks 操作。 这是一个有极高可移植性的方法,是应 该被用到的方法。 操作。 这是一个有极高可移植性的方法,是应 该被用到的方法。 #define BIT3 (0 x1 6) : puts(6。原 因是当表达式中存在有符号类型和无符号类 型时所有的操作数都自动转换为无符号类 型。因此 。原 因是当表达式中存在有符号类型和无符号类 型时所有的操作数都自动转换为无符号类 型。因此-20变成了一个非常大的正整数, 所以该表达式计算出的结果大于 变成了一个非常大的正整数, 所以该表达式计算出的结果大于6。这一点 对于应当频繁用到无符号数据类型的嵌入式 系统来说是丰常重要的。 。这一点 对于应当频繁用到无符号数据类型的嵌入式 系统来说是丰常重要的。 题目题目11答案答案 题目题目12 ?评价下面的代码片断:求评价下面的代码片断:求0的反码的反码 unsigned int zero = 0; unsigned int compzero = 0 xFFFF; /*1s complement of zero */ 题目题目12答案答案 ?求求0的反码的反码 unsigned int compzero = 0; /*1s complement of zero */ 题目题目13 ? typedef 在在C语言中频繁用以声明一个已语言中频繁用以声明一个已 经存在的数据类型的同义字。也可以用预处经存在的数据类型的同义字。也可以用预处 理器做类似的事。例如,思考一下下面的例理器做类似的事。例如,思考一下下面的例 子:子: #define dPS struct s * typedef struct s * tPS; 以上两种情况的意图都是要定义以上两种情况的意图都是要定义dPS 和和 tPS 作为一个指向结构作为一个指向结构s指针。哪种方法更指针。哪种方法更 好呢?(如果有的话)为什么?好呢?(如果有的话)为什么? 题目题目13分析分析 ? 答案是:答案是:typedef更好。思考下面的例子:更好。思考下面的例子: dPS p1,p2; tPS p3,p4; 第一个扩展为第一个扩展为 struct s * p1, p2; 上面的代码定义上面的代码定义p1为一个指向结构的指为一个指向结构的指 针,针,p2为一个实际的结构,这也许不是你为一个实际的结构,这也许不是你 想要的。第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学《信息与计算科学-科学计算与应用》考试参考题库及答案解析
- 2025年大学《光源与照明-光源与照明实验技术》考试备考题库及答案解析
- 2025年大学《酿酒工程-酒类储藏与陈化技术》考试参考题库及答案解析
- 2025年大学《音乐教育-音乐活动组织》考试备考题库及答案解析
- 2025年大学《老年学-老年社会保障》考试模拟试题及答案解析
- 2025年大学《复合材料成型工程-复合材料力学基础》考试参考题库及答案解析
- 5 椅子不简单(教学设计)-2024-2025学年二年级上册科学教科版
- 2025年大学《国际政治-国际政治经济学》考试备考题库及答案解析
- 2025年大学《交通管理工程-交通监控技术》考试备考题库及答案解析
- 2025年大学《社会工作-社会工作概论》考试备考题库及答案解析
- 2025全国医疗应急能力培训系列课程参考答案
- 初中英语试卷讲评及课堂教学设计
- 雨课堂在线学堂《中国传统文化》课后单元测试答案
- 2025年大学《社会工作-社会福利思想》考试参考题库及答案解析
- 冬季施工混凝土养护方法
- 2025年医学高数期末考试题及答案
- 中国近现代史纲要社会实践作业
- 高中历史课时作业(选修第一册)详解答案
- 传感器实验报告
- 三国志9全人物能力值表
- 上海市轨道交通14号线工程通号系统安装工程施工组织设计(最终版)
评论
0/150
提交评论