关于整数溢出的问题

[复制链接]
 楼主| batilin 发表于 2008-3-22 00:20 | 显示全部楼层 |阅读模式
在c语言中,有符号整数相加溢出的问题是可以检测的,但是无符号整数相加溢出却不知道怎么检测。<br />比如:unsigned&nbsp;int&nbsp;i1,&nbsp;i2;<br />怎么检测&nbsp;i1&nbsp;+&nbsp;i2&nbsp;的结果溢出了?<br />当然在汇编里面,是很容易的,用ADDS指令,再查询CPSR寄存器的进位标志位C就可以知道结果是否溢出。但是,在c语言中如何访问CPSR寄存器?你可能想到嵌入汇编,然后查询CPSR寄存器。可是,当我查看反汇编的指令时,发现ARM&nbsp;C编译器把&nbsp;i1&nbsp;+&nbsp;i2&nbsp;编译成&nbsp;ADD&nbsp;R3,R2,&nbsp;R1;&nbsp;&nbsp;而不是ADDS!也就是说,相加结果并不改变进位标志位,即使嵌入汇编,查询CPSR寄存器也是没有用的。<br />望各位指教,谢谢。
阿南 发表于 2008-3-22 09:20 | 显示全部楼层

通常都是自己处理

  
sz_kd 发表于 2008-3-22 09:41 | 显示全部楼层

要加判断语句判断是否溢出

  
lhzw2001 发表于 2008-3-26 22:17 | 显示全部楼层

if ((i1+i2)>溢出值)

  
computer00 发表于 2008-3-26 23:35 | 显示全部楼层

if((i1+i2)
  

您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

22

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

16

主题

22

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部