傻不拉几UU 发表于 2019-2-19 12:54:22

关于for循环

        int i, j, k;
       
        for (i = 0; i < 2;i++)
                for (j = 0; j < 2; j++)

                                printf("%d,%d\n",i, j);
输出结果是
0,0
0,1
1,0
1,1

求指导为什么J=1后 还会存在1,0的,有大神能帮解释一下循环口径吗。
小甲鱼视频写的是从第二个for先执行,本人理解答案应该是:
0,0
0,1
1,1

求大神科普一下咯

傻不拉几UU 发表于 2019-2-19 12:59:32

int i, j, k;
      
      for (i = 0; i < 2;i++)
{
                for (j = 0; j < 2; j++)
}
能否理解为这样的情况呢

jackz007 发表于 2019-2-19 13:10:00

本帖最后由 jackz007 于 2019-2-19 13:11 编辑

    外循环 i = 0:
            内循环 : j = 0 , j = 1
            
    外循环 i = 1 :
            内循环 : j = 0 , j = 1

31207 发表于 2019-2-19 13:22:38

因为在for(i=0;i<2;i++)进行第二次循环后
for(j=0;j<2;j++)又重新开始循环,所以它会把j初始化,即j=0;

edge_man 发表于 2019-2-19 13:35:16

我去,这是C语言吗

BngThea 发表于 2019-2-19 13:44:28

循环嵌套都是先里面后外面,等到外面的时候,里面又从零开始的

hiwch 发表于 2019-2-19 13:56:23


      int i, j, k;
      
      for (i = 0; i < 2;i++)
                for (j = 0; j < 2; j++)

                              printf("%d,%d\n",i, j);
可以分解为
i = 0;
i < 2;
j = 0;
j < 2;
printf(0,0)
j = j + 1;
j < 2;
printf(0,1)
j = j + 1;
j == 2;
i = i +1;
i < 2;
j = 0;
j < 2;
printf(1,0)
j = j + 1;
j < 2;
printf(1,1)
j = j + 1;
j == 2;
i = i +1;
i == 2;
如果满意的话给个最佳答案呀

小棋 发表于 2019-2-19 19:58:30

先执行外循环一次,再把内循环全部执行完,然后再执行外循环一次,再把内循环执行完


小甲鱼粉丝123 发表于 2019-2-19 22:31:31

你可以这么理解:
先运行for (i = 0; i < 2;i++)
其中运行表达式for (j = 0; j < 2; j++)一次
表达式for (j = 0; j < 2; j++)结束后,内存释放
继续运行for (i = 0; i < 2;i++) 循环一次,就又回到第二行所说

你可以设置断点监控i,j的变量值

zhuang123 发表于 2019-2-20 17:10:37

这是for的嵌套使用,当外面的for循环条件成立,就进入里面的for循环,直到里面for循环不成立,再跳出里面的循环,再继续判断外面的循环,直到外循环不成立。你理解有一点错误,因为每次 j 都是被初始化0 哦,具体是先i=0,i<2成立,然后在执行j=0,j<2成立,所以打印i=0,j=0,然后继续执行里面的循环直到不成立跳出,j=1,j<2成立,打印i=0,j=1,再而j=2,j<2不成立,跳出里面的循环,然后就是i=1,j=0   ;i=1,j=1。你如果前两个能理解的话,后面应该是看错了而已。

lijialijialijia 发表于 2019-3-11 16:01:03

这是C语言吧
页: [1]
查看完整版本: 关于for循环