今天学习了for语句循环嵌套与break语句,写代码的时候发现结果与我的预期相差很大,不断尝试询问之后,发现是我的阅读代码,理解代码的能力还是太差。
例一:
输出语句在整体for循环语句之外,在整个代码结束处
代码如下:
# include <stdio.h>
int main()
{
int i ,j ;
for (i=0; i<10 ; i++)
{
for (j = 0; j < 10; j++)
{
if (j==3)
break;
}
}
printf("i=%d ,j=%d\n",i,j); //注意输出语句位置
return 0;
}
代码解读:
输出句在整个for循环语句之外,而循环语句在符合条件下会一直在循环语句里进行循环,当整个循环语句结束后,数字跳出才会输出最后结果。所以最后的输出结果应该是i = 10 ,j =3.
编译结果如下:
i=10 ,j=3
例二:
输出语句在外层循环
代码如下:
# include <stdio.h>
int main()
{
int i ,j ;
for (i=0; i<10 ; i++)
{
for (j = 0; j < 10; j++)
{
if (j==3)
break;
}
printf("i=%d ,j=%d\n",i,j); //注意输出语句位置
}
return 0;
}
代码解读:
输出语句 printf("i=%d ,j=%d\n",i,j);在外层for循环进行输出,即当内层循环结束后,循环来到外层,输出语句才会进行输出,由代码可知,内层循环当且只有 j = 3 时,内层循环结束,所以最终输出结果应该是:
i=0 ,j=3
i=1 ,j=3
i=2 ,j=3
i=3 ,j=3
i=4 ,j=3
i=5 ,j=3
i=6 ,j=3
i=7 ,j=3
i=8 ,j=3
i=9 ,j=3
例三:
输出语句在内层循环
代码如下:
# include <stdio.h>
int main()
{
int i ,j ;
for (i=0; i<10 ; i++)
{
for (j = 0; j < 10; j++)
{
if (j==3)
break;
printf("i=%d ,j=%d\n",i,j); //注意输出语句的位置
}
}
return 0;
}
代码解读:
输出语句在内层循环,所以输出结果应该是符合循环条件的每一次循环。
编译结果如下:
i=0 ,j=0
i=0 ,j=1
i=0 ,j=2
i=1 ,j=0
i=1 ,j=1
i=1 ,j=2
i=2 ,j=0
i=2 ,j=1
i=2 ,j=2
i=3 ,j=0
i=3 ,j=1
i=3 ,j=2
i=4 ,j=0
i=4 ,j=1
i=4 ,j=2
i=5 ,j=0
i=5 ,j=1
i=5 ,j=2
i=6 ,j=0
i=6 ,j=1
i=6 ,j=2
i=7 ,j=0
i=7 ,j=1
i=7 ,j=2
i=8 ,j=0
i=8 ,j=1
i=8 ,j=2
i=9 ,j=0
i=9 ,j=1
i=9 ,j=2
。
以上结果是新手期的我在遇到代码位置不同导致编译不同问题学习的代码解读心得。
C语言小白,若有错误,欢迎大佬指点。