c++中的continue语句在while循环中

#include<iostream>usingnamespacestd;intmain(){inti=17;while(i>=10)if(--i%4==3)continu... #include<iostream>
using namespace std;
int main()
{int i=17;
while(i>=10)
if(--i%4==3)
continue;
else cout<<i--<<endl;
return 0;

}
为什么输出是16 14 12 10啊
展开
 我来答
duanggi
2019-06-08 · TA获得超过196个赞
知道小有建树答主
回答量:240
采纳率:87%
帮助的人:141万
展开全部

--i的意思为先将i的值减一,然后再返回i的值。i--的意思为先返回i的值,再将i减一。可以一步步考虑这个问题。首先i等于17,满足while循环条件i>=10,进入循环,

第一次迭代:判断if条件(--i%4==3),即先将i减一等于16,16%4等于0,不满足条件,执行else语句。输出i的值为16,然后执行减一操作,此时i等于15。

第二次迭代,继续判断(--i%4==3),先将i减一等于14,14%4等于2,不满足条件,执行else语句。输出i的值为14,然后执行减一操作,此时i等于13。

第三次迭代,继续判断(--i%4==3),先将i减一等于12,12%4等于0,不满足条件,执行else语句。输出i的值为12,然后执行减一操作,此时i等于11。

第四次迭代,继续判断(--i%4==3),先将i减一等于11,11%4等于3,满足条件,执行continue; 

第五次迭代,判断(--i%4==3),先将i减一等于10,10%4等于2,不满足条件,执行else语句。输出i的值为10,然后执行减一操作,此时i等于9。

因为不满足while循环条件,跳出循环。

syht2000
高粉答主

2019-06-08 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
这里重点是那个--i%4==3,--的优先级比%要高(具体的你可以看下C的运算符优先级表),因此这行相当于(--i)%4==3,然后--的意思为先自减,即在运算前先自减,因此第一次循环的时候,i为17,遇到--i%4==3时先自减1,相当于16%4==3,这个条件不成立,因此输出16,后面都是一样,依次判断15到10之间的数字是否能满足%4==3,不满足即输出,因此会依次输出16 14 14 12 10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
2019-06-08 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5485万
展开全部
--i 是前缀 --, 在表达式里,要先减1再使用。
i-- 是后缀 --, 在表达式里,要先使用,用毕后减1。
cuntinue 是短路本次循环,进入下次循环。
i=17 进入 while. 满足条件 i>=10, 进 if,前缀 --,i = 16, 不满足 if 条件,不执行continue,而执行 else 后面的 输出 i--, 于是印出 16 ,然后 减 1 变 15,回 while 循环。
i=15 进入 while. 满足条件 i>=10, 进 if,前缀 --,i = 14, 不满足 if 条件,执行 else 后面的 输出 i--, 于是印出 14 ,然后 减 1 变 13,回 while 循环。
i=13 进入 while. 满足条件 i>=10, 进 if ........印出 12 ,然后 减 1 变 11,回 while 循环。 i=11 进入 while. 满足条件 i>=10, ....印出 10 ,然后 减 1 变 9,回 while循环。
i=9 进入 while, 不满足条件 i>=10,结束 while循环。
上述过程,未满足过 %4 余 3 ,所以 没有执行过 continue。
追问
为什么在输出16后还要再减一啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式