C语言 for循环没看懂怎么运行

请问这是怎么运行的?
看不懂怎么得到这样的结果

img


clude <stdio.h>
#include<math.h>

int main()
{
    int i, j, k;
    printf("i j k\n"); // 控制台打印出i j k 后换行
    for(i = 0; i<2; i++)
        for(j = 0; j<2; j++)
            for(k = 0; k<2; k++)
               printf("%d %d %d\n",i,j,k); // 控制台打印出i j k的值后换行
    return 0;
    /**
     * 第一次循环,执行第一个for i=0,第二个for j=0,第三个for k=0,执行printf,输出第一行0 0 0
     * k++后,此时i=0,j=0,k=1,然后第三个for做循环判断k<2;输出第二行 0 0 1
     * 第三个for再次循环,此时i=0,j=0,k=2,判断k<2,不成立,则跳到第二个for做循环
     * 此时i=0,j=1,执行第三个for循环,k=0,输出第三行 0 1 0 
     * 继续执行第三个for循环,i=0,j=1,k=1输出第四行 0 1 1 
     * 继续执行第三个for循环,i=0,j=1,k=2,k<2不成立,
     * 跳到第二个for循环,j=2,j<2不成立 ,
     * 跳到第一个for循环,此时i=1,i<2成立,执行第二个for循环,j=0,执行第三个for循环
     * k=0,输出第五行 1 0 0 ,
     * 继续执行第三个for循环,此时i=1,j=0,k=1,k<2成立输出第六行 1 0 1
     * 继续执行第三个for循环,此时i=1,j=0,k=2,k<2不成立,
     * 跳到第二个for循环,此时i=1,j=1,k=0,j<2成立
     * 继续执行第三个for循环,此时i=1,j=1,k=0,k<2成立输出第七行 1 1 0 
     * 继续执行第三个for循环,此时i=1,j=1,k=1,k<2成立输出第八行 1 1 1 
     * 继续执行第三个for循环,此时i=1,j=1,k=2,k<2不成立
     * 跳到第二个for循环,此时i=1,j=2,j<2不成立
     * 跳到第一个for循环,此时i=2,i<2不成立
     * 退出第一个for循环,程序执行结束
     * 
     * /
}

i=0:
  j=0:最内层for循环:k为0,1,所以输出 : 0 0 0 0 0 1;最内层结束,第二层的j=0结束,j++,此时i=0
  j=1时:最内层for循环:k为0,1,所以输出 :0 1 0 0 1 1;最内层结束,第二层的j=1结束,第二层也结束了,i++,i变为1

i=1:
  j=0:最内层for循环:k为0,1,所以输出 : 1 0 0 1 0 1;最内层结束,第二层的j=0结束,j++,此时i=1
  j=1时:最内层for循环:k为0,1,所以输出 :1 1 0 1 1 1;最内层结束,第二层的j=1结束,第二层也结束了,i++,i变为2,最外层循环结束

这不是嵌套循环吗
i执行两次
j执行四次 (2的平方次)
k执行八次 (2的三次方次)
输出是在k循环中,所以输出八次