原创 C语言面试小结1

2010-3-7 09:08 2605 12 13 分类: MCU/ 嵌入式

近来面试,年纪大了,有些问题忽然变得不太清楚,在此记录一下,希望大家共同学习:


1. char的取值范围是 -128~127, -128的保存为: 0x80
   其实也就是-0与0的区别.
例如: char a="128";
      数据被强制按照 0x80 存储于内存。
      按照 "%d"格式输出则为: -128
      按照 “%x”格式输出则为: 0xFFFFFF80!
2. 整形变量的取反问题     
      int a="5";
      ~a按照 "%d"输出则为: -6
      ~a按照 "%x"输出则为: 0xFFFFFFFA
分析如下:
      a="0x00000005"; (0101)
     ~a=0xFFFFFFFA; (1010)    // 十六进制存储方式, %x输出
十进制的输出为: 首先确定是负数, 然后按照减1取反的原则处理:
      1010 - 1 = 1001;
     ~1001 = 0110;            // 6
     所以该值为: -6!

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户807087 2010-3-10 15:18

还真是搞不清楚了。。。引以为鉴。
相关推荐阅读
用户1156376 2014-08-18 17:23
[博客大赛]MDK下代码的分段管理 续3
继续写点分段管理的问题。 设计思想主要是设计一个通用的BSP,固化后只需要修改APP代码就可以,这适用于远程升级的系统或是进行二次开发的系统。 考虑到编译器链接的时候会把没有使用的代码段(...
用户1156376 2014-02-27 18:14
Freescale MCU SPI
Freescale S12 SPI: 0. 以下所述为查询模式使用SPI 1. SPI控制器有两个中断, 数据发送(SPTEF)和数据接收(SPIF) 2. 数据发送(SPTEF)标志...
用户1156376 2014-02-26 09:17
Freescale MCU摘记
仅用于记录Freescale的点滴记录: 1. 把AD口用作IO口的方法: 除了正常的设置外,还需要把 ATDDIEN 寄存器写为0xFF, 这样使能了数字IO。否则默认为AD输入。 ...
用户1156376 2013-12-14 11:33
[STM32]MDK下代码的分段管理 续2
前文所述的代码分段,限定比较大,对于使用 #pragma arm section code=".ARM.__at_0x8100000" 固定地址的方式,每个文件都需要指定不同的地址以区别。...
用户1156376 2013-12-09 18:12
[STM32]MDK下代码的分段管理
编译大型的程序时,可能某一段代码固定之后不再改变(比如BSP),而应用部分经常修改。在这种情况下,如果使用在线升级或是Bootloader的方式升级程序时,你就觉得每次升级的代码有一部分是重复的(...
用户1156376 2012-10-14 09:10
【uCOS-III移植笔记】OS启动过程
(1) 关闭系统中断 (2) CPU_Init(); 初始化CPU服务(时间戳、中断时间测量、CPU信息初始化等) (3) OSInit(); 初始化系统(系统变量、系统任务...
我要评论
1
12
关闭 站长推荐上一条 /3 下一条