c/c++整理--位运算与嵌入式编程(3)
2017-05-09 23:48
176 查看
一、看代码写输出——整数的自动转换
void foo(void) { unsigned int a = 6; int b = -20; if(a+b > 6) { puts(">6"); } else { puts("<=6"); } }这里需要注意的是,无符号数与有符号数之间运算的时候,有符号数要转换成无符号数再进行运算。这里很显然,-20转换成一个无符号数后是一个非常大的一个数。所以这里输出>6.
二、关键字static的作用是什么
(1)在函数体中,static变量在函数结束后不会被销毁,其值不会变。(2)static全局变量,可以在本文件中被访问,在同一工程中的其他文件中不可见。
(3)static函数,可以在本文件中被访问,在同一工程中的其他文件不可见。
三、关键字volatile有什么含义
一个定义为volatile的变量是说这个变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确的说,就是优化器在用到这个变量时必须每次都小心地重新读取这个变量的值而不是使用保留在寄存器里的备份。举例:
(1)并行设备的硬件寄存器(如状态寄存器);
(2)一个中断服务子程序会访问到的非自动变量;
(3)多线程应用中被几个任务共享的变量。
四、判断处理器是Big_endian还是Little_endian
编写函数,判断处理器是Big_endian还是Little_endianint checkCPU() { union w { int a; char b; } c; c.a = 1; return (c.b == 1); }小端模式的CPU高位地址对应高位数据,地位地址对应地位数据。大端模式相反。联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性轻松获得了结果。
五、评价代码片段——处理器字长
unsigned int zero = 0; unsigned int compzero = 0xffff; /*1's compzero of zero*/对于一个不是16位的处理器来说,上面的代码是不正确的,应编写如下:
unsigned char compzero = ~0
相关文章推荐
- c/c++整理--位运算与嵌入式编程(1)
- 高质量的C/C++编程【某市第九研究所嵌入式软件开发工程师面试题】
- C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,
- 整理C++常用整数运算的所有细节
- 关于嵌入式C&&C++的一些编程问题(一)
- 嵌入式编程常考的无符号数和有符号数的运算问题
- [C/C++/嵌入式]嵌入式C编程的风格规范
- 【python】Python + C/C++ 嵌入式编程(1):多维数组Numpy.Array()在Python和C/C++文件间的传递问题
- Linux C/C++ 编程 (一)—— indent 工具(代码整理工具)
- C++ —— 使用模板元编程来进行递归运算的优化
- 关于嵌入式C&&C++的一些编程问题(三)
- C++第5周任务【任务2】本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
- 再探利用C++的STL和堆栈编程思想实现数学四则运算计算结果
- 【整理】重叠IO模型的编程思路及C++源代码
- [置顶] Python + C/C++ 嵌入式编程(1):多维数组Numpy.Array()在Python和C/C++文件间的传递问题
- C++ socket编程入门资源整理
- 整理的 英文 c/c++ 编程 wiki
- MFC - 网络编程 (孙鑫C++第十四讲笔记整理)
- MFC(文本编程,孙鑫C++第五讲笔记整理)
- c/c++整理--编程计算含有汉字的字符串长度