1. 用预处理指令交换两个参数的值
#define Swap1(x, y) { (x) += (y); (y) = (x)-(y); (x) -= (y); }
#define Swap2(x, y) { (x) = (x)^(y); (y) = (x)^(y); (x) = (x)^(y); }
#define Swap3(x, y) { int tmp = (x); (x) = (y); (y) = tmp; }
2. 为什么说if (0 == x) 比 if( x == 0)好?
把常量写在左边,由于常量不可以作为左值,那么当少写个'='时将会编译报错,避免了这种错误的发生。
3. 将地址0x8000中存放的整型变量,清除bit1
a &= ~(0x01<<1);
4. 在32位机器上如下变量类型所占的内存分别是多少
short
char*
long long
double
C语言类型 | 32位系统 | 64位系统 |
char | 1 | 1 |
short | 2 | 2 |
int | 4 | 4 |
long int | 4 | 8 |
long long | 8 | 8 |
char * | 4 | 8 |
float | 4 | 4 |
double | 8 | 8 |
5. 简述代码编译后生成的map文件里面的内容
map文件是编译器在链接之后生成的一个文件,用来反映各个函数模块之前的调用关系以及在flash和SRAM中的分布情况,了解这个文件对深入理解嵌入式软件开发有很大的帮助。