(word)程序员面试宝典第二部分.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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) 如果位域字段之间穿插着非位域字段,则不进行压缩;

文档评论(0)

muoy0620 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档