C语言负数转正数的隐藏缺陷

今天在写程序的时候发现了一个相当隐蔽的错误,查了好久才找到了这个缺陷,就是当我们在将一个负数变成正数的时候,一定要注意防止数据溢出。比如定义一个char型的变量a。。。。。。。。如下所示:

char   a;

if (a<0)

{

 a=-a;

}

printf("%d\n");

这几条语句在一般情况下是不会出问题的,比如我们使变量a=-10,输出为10;然而当a=-128时,问题就出现了,此时输出的仍然是-128(这是我在VC6.0上的测试结果),分析其中的原因才发现char型的数据的取值范围是-128~+127 所以当a=-128时a=-a;发生了溢出。。。。。。。。。。。。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值