您的位置:首页 > 编程语言 > C语言/C++

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

2013-07-24 15:30 78 查看
今天在写程序的时候发现了一个相当隐蔽的错误,查了好久才找到了这个缺陷,就是当我们在将一个负数变成正数的时候,一定要注意防止数据溢出。比如定义一个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;发生了溢出。。。。。。。。。。。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: