首页 > 解决方案 > 有人可以帮我理解这个 C 程序的执行吗?(初学者)

问题描述

 #include <stdio.h>

 main() 
 {
    int a[2][5], i,j; //2d array declaration

    for(i=0;i<=1;i++) //first loop for 1st dimension
    {
        for(j=0;j<=4;j++) //nested loop for 2nd dimention
        {
            printf("Value for a[%d][%d] is :  ", i,j);
            scanf("%d", &a[i][j]); //asks for value
        }
    } 
 }

在这个程序中,当循环执行时,在第一次运行时,i=0,并且在其中 j=0,1,2,3,4。当这完成并且涉及到 i=1 的第二维时,为什么当条件已经为假(j<=4)时它再次运行嵌套循环?

所有这些常量值都保存在哪里?再次运行嵌套循环时是否会重新启动 j 的值?

标签: carraysloops

解决方案


循环具有以下形式的for三个组件(表达式)for (A;B;C)

  • A- 预迭代,在开始时运行一次
  • B- 循环条件,在每次迭代之前测试,包括第一次
  • C- Post-Iteration,每次迭代后执行

您要求在j=0每次循环开始时进行初始化,然后测试j <= 4哪个是正确的。当循环重复时,它会j++再次测试。

值得注意的是,这些都是可选的并且for (;;)是有效的,但除非你这样做,否则break它是一个无限循环。


推荐阅读