- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(word)程序员面试宝典第二部分
关于printf
答案:printf函数中不会对参数做强制类型转换
unsigned short int
unsigned short int a=0;
couta-1;//65535
NOTE: short int 16位 , 2的16次方为65536
中断服务子程序 ISR
解析:存在的问题如下
ISR不能有返回值;
ISR不能传递参数;
ISR应该是短而高效的,在ISR中做浮点运算是不明智的;
ISR中不应该有重入和性能上的问题,因此不应该使用pintf()函数。
裸奔的系统:硬件中断响应程序的运行插入时机是随机的,程序中不存在这样的调用语句:“value=interrupter( )”, 所以,即使有返回值也不知返回给谁。? 同理,如果中断函数有形参,但因没有调用者,也就没有实参对形参赋值。所以,不可能有参数传递。裸奔系统中,中断程序由硬件触发执行。这意味着中断函数没有具体的调用者,所以,中断函数无法将值返回给任何对象非裸奔系统:操作系统需要进行各种调度安排,所以接管了中断的入、出口;另外,还增加了许多软件中断。这些中断函数的运行插入时机已经不再是随机了。一个中断申请发生后,其运行时机取决于操作系统的确定安排和调用。也就是说,有了调用者,所以可以有返回值和参数传递。
嵌入式程序员:硬件 中断 RTOS
大端小端
n?little-endian?systems,?what?is?the?result?of?following?C?program???
typedef?struct?bitstruct{??
int?b1:5;??
int?:2;??
int?b2:2;??
}bitstruct;??
void?main(){??
bitstruct?b;??
memcpy(b,”EMC?EXAMINATION”,sizeof(b));??
printf(“%d,%d\n”,?b.b1,?b.b2);??
}??
解析:
b的大小只有4字节,且b只用了里面的9个bit。memcpy实际拷贝了EMC (带空格)四个char进入b。只有前9个bit有用,即EM两个char有用。
b1分配5位,这里优先分配的应该是低5位,也就是第一个字节的低5位。
继而分配b2的2个字节,也就是第1个字节中紧接着的2位。
最后分配b3的3位,按照规则1、2,b3还是紧接着存放的,b3的最低位是第一个字节的最高位,高两位为第2个字节的低两位。
在一个字节中:高位 低位
(将b3想象成一个环)
3.
b.b1转换为00101且因其为int,以最高位扩展,为000000000000101,即值显示为5
b.b2将转换为10,以最高位符号位扩展为11111111111111110,即-2的补码,显示为-2;
数据溢出问题
解析:注意一点char的范围为-128~127,(unsigned char范围为0~255),题目中会引起char溢出,0-127再加一就会溢出变为-128,就会引起无限循环问题
Struct位域问题—sizeof
#include iostream
using namespace std;
1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不容纳为止;
2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍;
注意:这里的位宽之和与类型的比较中,类型的大小指的是位数,比如int为32, char为8, short int为16
struct
{
char a1:2;
char a2:4;
char a3:2;
}A;//1
struct
{
char a1:6;
char a2:4;
char a3:2;
}B ;//2
struct
{
int a1:2;
int a2:4;
int a3:2;
}C ;//4
3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++采取压缩方式;
struct
{
char a1:6;
int a2:4;
char a3:2;
}D ;//12
4) 如果位域字段之间穿插着非位域字段,则不进行压缩;
您可能关注的文档
最近下载
- 【9历期中】安徽省合肥市第四十八中学2024-2025学年九年级上学期期中历史试题(含解析).docx VIP
- PLC项目实训——传送带的PLC控制 课件.pptx VIP
- 新型冠状病毒肺炎诊疗指南解析.docx VIP
- Unit 6 Rain or shine 单元导学案 七年级英语下册(人教版2024).pdf
- 《建筑地基处理技术规范2012》.pdf VIP
- 人教版小学语文一年级上册生字表笔顺.pdf VIP
- 1.8 天气的影响(教学设计) 2025教科版科学三年级上册.docx
- 超星网课尔雅《法律与社会》超星尔雅答案2023章节测验答案.pdf
- 卓越研究生英语_综合教程1(人文篇)吴樯_习题答案解析.pdf
- 鼠标键盘操作.ppt VIP
文档评论(0)