C语言面试题实战汇总02

本文汇总了C语言面试中的实战题目,涵盖预处理指令、编程技巧、数据通信、嵌入式开发、文件操作和排序算法等多个方面。通过这些问题,可以考察C语言的基本功和对嵌入式系统的理解。
摘要由CSDN通过智能技术生成

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中的分布情况,了解这个文件对深入理解嵌入式软件开发有很大的帮助。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值