[问题] if判断式内的 绝对值abs

楼主: ooww (另外一个我)   2021-07-30 01:29:57
https://imgur.com/a/OXBUD0N
如图所示 第9行
if( abs(b[0]) > abs(a) )
c = b[0];
abs(b[0]) 等于|-10| = 10
abs(a) 等于|-2147483648| = 2147483648
最后c=b[0],就表示10>2147483648
怎么会这样?
还是在if判断式内,abs有其他解读?
愿奉上100P
作者: enthos (影斯作业系统)   2021-07-30 01:44:00
2147483648 == 0, INT_MAX == 2147483647
作者: ko27tye (好滋好滋)   2021-07-30 01:49:00
你overflow了
作者: mick90207 (阿公)   2021-07-30 02:00:00
你翻一下计概会讲的整数储存范围
作者: NciscalA   2021-07-30 02:05:00
有号数 overflow 是 UB 吧undefined behavior 未定义行为
作者: sarafciel (Cattuz)   2021-07-30 05:52:00
你知道int这个型态的最大表示数值范围是多少吗?还是你觉得int可以你要塞多大就多大?XD
作者: longlongint (华哥尔)   2021-07-30 11:23:00
能印看看 abs(-2147483648) 是多少,另外查一下是不是UB哦 上面做了推荐文章: jserv 重新理解数值
作者: loveme00835 (发箍)   2021-07-30 12:50:00
无号数叫做 wraparound, 不是相同情形
作者: MartinJ40 (Martin J-40)   2021-07-30 13:17:00
去念计算机概论
作者: jacky1989   2021-08-01 00:58:00
overflow......
作者: xiao2chen (台大小陈)   2021-08-05 12:44:00
XD 不错啊 从错误中学习
作者: ArdenCho (Arden)   2021-10-01 18:36:00
Overflow 了,整数溢位

Links booklink

Contact Us: admin [ a t ] ucptt.com