码迷,mamicode.com
首页 > 其他好文 > 详细

abs(INT_MAX-(-1))

时间:2014-08-15 17:47:39      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   问题   div   代码   log   设计   

写一个程序,结果总是不对,check逻辑好几遍也没发现错误,无奈之下debug。发现一个有趣的现象abs(INT_MAX-(-1))返回值是-2147483648。于是看了下abs函数的代码实现。

1 int __cdecl abs (
2         int number
3         )
4 {
5         return( number>=0 ? number : -number );
6 }

这个问题设计无符号数、有符号数的范围,同时跟溢出之后的结果有关。abs函数的参数是int,是有符号的, INT_MAX-(-1)大于int的表示范围,其无符号值为2147483648,然后该无符号值转化为有符号int为-2147483648。对于语句number>=0? number:-number 我们得到-(-2147483648),即2147483648。而abs函数的返回值类型是int,是有符号的,2147483648转变为有符号int值为-2147483648。

abs(INT_MAX-(-1)),布布扣,bubuko.com

abs(INT_MAX-(-1))

标签:style   blog   color   问题   div   代码   log   设计   

原文地址:http://www.cnblogs.com/Kai-Xing/p/3915285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!