public static void main(String[] args){
back1:
for(int i=0i<10i++){
back2:
for(int j=0j<10j++){
if(j==9){
continue back2
}
}
System.out.println("test")
}
}
}
当是continue back1的时候,当i==0时候第二层for循环到j==9的时候就结束此次循环,执行continue back1,到第一层循环。此时因为有i++所以i==1的时候,第二层for循环到j==9的时候就结束当前循环,执行continue back1。这样下去最后当i>9的时候循环就结束了,所以没有输出。 当continue back2时候,一样当i==0时候第二层循环到j==9的时候,就结束此次循环,执行continue back2,到第二层循环。此时j==10了,所以就直接执行输出语句。当i==1的时候也是一样的道理。 两层循环时候,先执行完内循环再执行外循环。
1楼说得没错,continue 是终止执行当前循环位于continue 之后的语句,开始下一次循环,即k+1。你把它删了应该没什么影响楼下(2楼,其实本来我是2楼,修改回复后变成3楼了)纯扯淡 昨晚在床上用手机回复的,今早起来特意帮你单步调试了一下,有没有continue根本没任何影响,因为在k循环里,continue下没有任何语句。以后类似问题你若是有疑问,可以自己设断点,单步调试一下,跟踪各个变量的值,你就清楚了
continue的意思是跳过这个语句后面的循环体,直接进入下一轮循环。当然for循环语句的话,还要先执行for语句第二个分号后面的语句,这里即为c++。循环嵌套,用括号分开,就看得清楚了。
#include<stdio.h>
void main()
{
int a,b,c
for(a='x'a<='z'a++)
{
for(b='x'b<='z'b++)
{
for(c='x'c<='z'c++)
{
if((a!='x')&&(c!='x')&&(c!='z')&&(a!=b)&&(b!=c)&&(c!=a))
printf("a->%c,b->%c,c->%c\n",a,b,c)
else
continue
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)