中易网

求高手为什么这两个while循环结果不一样,判断跳出循环的条件不一样?!

答案:3  悬赏:0  
解决时间 2021-02-26 20:35
while(a<10) 和 while(r=m%n)

while(a<10) {a--;}
如果a的初始值设为9 那么循环就会一直进行下去 死循环

而while(r=m%n)在r=0时 循环会停止!
为什么会这样?有人说while括号里是bool运算。。若为0 就判断错!跳出循环!
那为什么while(a<10) 不会在a减为0的时候跳出 而是继续减下去成为死循环

为什么??
最佳答案
a初始为9,那么a--,a一直变小,永远小于10,a<10永远成立,当然死循环。
而r=m%n,while用来判断是否循环的时候,用的是r的值,而上一个while(a<10)用的是a<10这个不等式的结果。
全部回答
while ()括号里面的整个是一个表达式,系统判断的是整个表达式,而不是一个变量。在C语言中,下面都是表达式: a a=b a>b a==b 需要注意的是,a=b表达式的值是b,而a==b表达式的值是一个bool量 至于你问题中的 (a<10) 和 (r=m%n),是不同的表达式。只有在特定场景下,才可能等价。
你指的地方显然不对,它在第一个while(1)外面,而while(1)是死循环,没有break或return语句是无法退出的。 如果你是想退出while(1)循环,而不退出主函数,要在代码3处加退出条件,如if(条件)break;(只能用break) 如果你不仅想退出while(1)循环,还退出主函数,那么在代码1、2、3处加退出条件皆可,如if(条件)return;(只能用return) 不知我说清楚了吗?有问题可以讨论。 main() { while (1) { 代码1 while (*p) { 代码2 } 代码3 } // 应该就是在这边加入 return 什么把? 错误,在死循环外加任何语句都无用。 }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
粤语,吴语,闽南语,在海外用得最多是那个,
张氏内衣家居生活馆怎么去啊,有知道地址的么
找一首英文歌 歌词是 士兵为我守卫边疆 传道
大河村农业生产互助协会怎么去啊,有知道地址
长江黄河银河准河松花江哪个属不同类的词语
细菌英语说法
网关是软件还是硬件?
华硕a450e47jf 电脑鲁大师跑分多少
交叉盘什么意思
小学作文我变听话了
山东春宇物业管理有限公司建委家属院物业服务
年金信用卡丢了,补办后用与公司沟通么??新
太原北美新天地时尚中心和天美新天地是同一个
题都城南庄 的中心
省建二公司生活区在什么地方啊,我要过去处理
推荐资讯
关于未焊透的焊接小知识
学生信用卡在线申请学生如何申请信用卡吗
天下兴亡,匹夫有责逐渐走向成熟的你,对自己对
江边家具批发部地址在什么地方,想过去办事
描写四季的句子主要冬季
精华能当眼霜用吗?
恩施市特殊教育学校这个地址在什么地方,我要
东港市机动车驾驶员培训中心地址有知道的么?
沙县公路港(北港)北门这个地址在什么地方,我
东方家园玉泉营店(南门)这个地址在什么地方,
北海哪个药店药最真
郑州大学路南三环哪里有五金店
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?