2 steve s96 Steve_S96 于 2016.03.30 18:57 提问

Linux下的C语言程序问题无限循环

这个程序我在Linux里用gcc编译,然后无限循环,我用ctrl+c但是只能停止循环,却不能退出运行,这是一个问题,还有一个就是为什么它会无限循环?我把for里面中间一个x!=9.9改成x<=9.9还是无限循环,为什么?图片

4个回答

CSDNXIAOD
CSDNXIAOD   2016.03.30 19:02

杂记之C语言之无限循环
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Steve_S96
Steve_S96 完全没有回答我的问题
一年多之前 回复
xshuang2
xshuang2   2016.03.30 19:14

改成<=9.9就不会出现这个情况的,

Steve_S96
Steve_S96 改了,我说了,还是一样无限循环
一年多之前 回复
majianfei1023
majianfei1023   2016.03.30 19:17

亲测,改为<=9.9不是无限循环,用!=是无限循环的原因很简单,float,double的!=不能这么判断,比如你判断 a是不是等于10.0,不能if(a!=10.0),而要用if(a>10.0-0.000001 && a < 10.0 + 0.000001)
看看书就知道为什么了。

qq423399099
qq423399099   Ds   Rxr 2016.03.30 20:24

电脑中一般无法精确存储浮点数,只能近似存储一个非常非常接近该数的数字,这和存储方式有关(楼主可以百度自己看)
所以一般判断浮点数会设置一个误差(比如10的负6次),如果误差小于该值我们就认为他们是相等的
LINUX GCC编译亲测结果是对的
图片说明
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!