微笑到最后 发表于 2019-12-6 16:37:12

嵌套循环的顺序是什么啊?

#include <stdio.h>
int main()
{
        int i,j,k;
        printf("i,j,k\n");
        for(i=0;i<2;i++)
           for(j=0;j<2;k++)
              for(k=0;k<2;k++)
                printf("%d %d %d\n",i,j,k);
}

他这个程序的输出结果是
i,j,k
000
001
000
001
000
001
000
001
...

最后的魁拔 发表于 2019-12-6 16:43:38

i=0->j=0->k=0->k<2->printf->k++->k<2->printf->k++(当最下层完了,第二个应该是j++)->j++

jackz007 发表于 2019-12-6 16:57:22

本帖最后由 jackz007 于 2019-12-6 18:35 编辑

      这句代码是错误的:
         for(j=0;j<2;k++)
      所以,你的输出并非是预期的,改过以后再看看

       不管是什么语言,嵌套循环永远是先内后外,外层驱动内层,内层的循环速度一定比外层快,内层走一圈,外层走一步,内层再走一圈,外层再走一步,。。。。。。依次类推,直到循环结束。当然,多层嵌套也是同样的规则。

zltzlt 发表于 2019-12-6 18:52:55

for(j=0;j<2;k++) 这一句有错误,应把 k++ 改为 j++。

先执行外层的第一次循环,再执行内层的第一次循环,再执行内层的第二次循环,…… 知道内层循环完毕,执行外层的第二次循环,再执行内层的第一次循环 …… 最后循环全部执行完毕。

sanguine_boy 发表于 2019-12-7 00:31:10

把 for(j=0;j<2;k++)改为for(j=0;j<2;j++)
i=0,j=0,然后循环for(k=0;k<2;k++),即k=0,1
i=0,j=1,然后循环for(k=0;k<2;k++),即k=0,1
i=1,j=0......
i=1,j=1......
简单的说就是先循环完最内层再循环外层
页: [1]
查看完整版本: 嵌套循环的顺序是什么啊?