C语言while循环语句判断条件最终结果超出条件所在的范围,如下图所示。

为什么第一图出错,而第二图却能正确执行。将第二图(阳阳买苹果问题)改为printf("%d",n); 输出的n值依然超出100,这是为什么??

        %d 十进制

  %f 浮点,,,实数。

  这个就是原因。。内存存放格式不一样,,读取不一样,,,结果就变了

追问

不对哦,兄弟

追答

看清题目了,,,,你的问题是  因为循环变量 大于条件却 得到正确的答案,,其实你还是不知道while 的运算流程图

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-25
第一图程序与事实不符才会出现纠结过不对。
我们来看第三图:while的循环控制条件是n<100,而循环里面对循环控制变量的修改是n*=2,也就是说n的值是一个等比数列,且首项为2,那么我们容易想到,其中必有一项为64,然后进入循环条件判断,此时n<100,继续进入循环,该次循环条件下的循环体执行结束后,此时n的值变为128,不满足条件,退出循环。所以最后的n的值为128.追问

第二图(阳阳买苹果)n在其中n值没超过100??

追答

没超过怎么退出循环呢?

追问

嗯,我知道了,谢谢了。这个问题纠结了很久……

第2个回答  2020-05-12
x--,先判断,后计算。
在循环体内的时候,当x减到0,然后判断,发现条件(x>0)不成立,退出。此时对x没有任何赋值操作。
在循环判断条件的时候,当x减到0,判断,发现条件(x>0)不成立,退出。但是,此时x--还有一步减法没有操作,继续,变成-1.
如果是--x,两个结果就一样。这个是先计算,后判断(或者其他运算)
第3个回答  2019-05-29
x--,先判断,后计算。
在循环体内的时候,当x减到0,然后判断,发现条件(x>0)不成立,退出。此时对x没有任何赋值操作。
在循环判断条件的时候,当x减到0,判断,发现条件(x>0)不成立,退出。但是,此时x--还有一步减法没有操作,继续,变成-1.
如果是--x,两个结果就一样。这个是先计算,后判断(或者其他运算)
第4个回答  2013-09-25
第一个图没有出错,b在执行该循环体之前是少于100的,执行完之后变成127,所以跳出循环体,追问

嗯,这个我懂了,但是第二图得出的结果是正确的。如果按照第一图的逻辑,第二图岂不是n值也超过了100??

追答

肯定啊,n小于100 根本不会跳出while循环,你printf("%d",n); 看看就知道了

追问

既然超出了100那<100的判条件岂不是没用了……

追答

while不是用来限定b的值,只是负责判断,如果你要限定b的值
应该在对b赋值之前先判断if(b<100)

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网