1996年,
阿丽亚娜火箭升空约40秒时,
在3500米以上高度发生爆炸。
火箭瞬间变成一个几亿欧元的大烟花。
这应该是史上最贵的烟花了。
事故原因呢?
。。。。。。
是一行代码惹的祸
浮点数转换整数
发生了数值溢出问题。
什么是数值溢出?为什么会发生数值溢出?
任何类型都只能用有限的位数来存储数据,表示数的范围是有限的
向变量赋的值超出了其类型的表示的数的范围
生活中的数值溢出问题?
第一代身份证号码中的出身年份是两位数,这时就会出现问题,
如何区分百岁老人和新生婴儿呢?
第二代身份证将记录的出生年份改为四位数
我们再来看一个在C语言中整数数值溢出的实例
编译运行时给出了警告:
[Warning] integer overflow in expression [-Woverflow]
并且输出的结果也是错误的,导致程序运行出错,计算结果超出了long的范围
long类型占4字节,可表示的范围 :
-21 4748 3648 ~ 21 4748 3647
在今后编写代码的时候,我们也一定要注意数值溢出问题,避免出错。以下是几种解决的方法:
1.用取值范围更大的类型,缺点是导致存储空间的浪费
2.充分了解处理问题规模,使用恰当的数据类型
3.同种类型在不同平台占的字节数是不一样的,最好是用sizeof计算变量或类型的长度
~~end 感谢阅读
想要了解更多编程小知识,关注 IT课代表家
如果对您有帮助,请转给更多的人看看
领取专属 10元无门槛券
私享最新 技术干货