今天发现代码里有如下的一个bug

unsigned int a,b;

int  c;

  c = a-b;

 

一般的情况下这段代码是没有什么问题的。

但是当b>0x80000000的时候就会出现bug

这时候尽管a<b,但是a-b不会小于0。

 

这时候a-b会出现错误的答案,但是a>b是没有问题的。

因为对于unsigned int来说,a>b是通过CF这个flag来判断的,而a-b要得到正确答案需要同时判断SF这个flag

 

参考

http://www.anqn.com/jiamijiemi/nixianggongchengjishu/2008-12-08/a09104356.shtml 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-02-02
  • 2021-07-06
  • 2021-11-02
  • 2022-12-23
  • 2022-02-27
  • 2022-01-04
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-26
  • 2022-03-06
  • 2022-12-23
  • 2021-07-24
  • 2022-12-23
相关资源
相似解决方案