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啊 展开
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啊 展开
展开全部
--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循环条件,跳出循环。
展开全部
这里重点是那个--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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
--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。
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后还要再减一啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |