有符号数,取绝对值后再赋值给有符号数,会有bug吗?

2020-01-21 21:30发布

int ia,ib;
long la;
..........
ia = abs(ia);
ib = abs(ib);
la= ia+ib;
........

本意是要得到 ia与ib的绝对值之和,这样能得到正确的结果吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
lans0625
1楼-- · 2020-01-21 22:35
我觉得没问题,难道还得有个绝对值专用的绝对值数据类型?
haibaogk
2楼-- · 2020-01-22 01:27
 精彩回答 2  元偷偷看……
gmajvfhpa
3楼-- · 2020-01-22 03:56
haibaogk 发表于 2015-1-10 11:10
abs函数本身返回的就是有符号数,这里不会溢出,所以应该没问题。

问题肯定有,我也是花了一个晚上才发现
lans0625
4楼-- · 2020-01-22 04:51
gmajvfhpa 发表于 2015-1-10 11:14
问题肯定有,我也是花了一个晚上才发现

什么问题?说说看,不要卖关子。。。。
haibaogk
5楼-- · 2020-01-22 05:17
搞不清楚楼主哪里出问题了。可能编译环境不同吧。这里是51单片机分论坛,难道楼主用在51单片机上?那问题是不是51内存溢出啊,int型本来就占4个字节,long型更多,用51做这个,肯定容易出问题,实在不行建议la改为unsigned int
lans0625
6楼-- · 2020-01-22 08:32
如果有符号数的表示符号的那位是用‘1’表示正数就有问题,相反就没有问题。

一周热门 更多>