c - 有人可以帮我理解这个 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 的值?
解决方案
循环具有以下形式的for
三个组件(表达式)for (A;B;C)
:
A
- 预迭代,在开始时运行一次B
- 循环条件,在每次迭代之前测试,包括第一次C
- Post-Iteration,每次迭代后执行
您要求在j=0
每次循环开始时进行初始化,然后测试j <= 4
哪个是正确的。当循环重复时,它会j++
再次测试。
值得注意的是,这些都是可选的并且for (;;)
是有效的,但除非你这样做,否则break
它是一个无限循环。
推荐阅读
- python - 如何将shell脚本中的*整个*句子插入python脚本?
- html - 选择具有至少 1000 个隐藏选项的元素可能会导致单行下拉菜单
- javascript - 获取对象值时获取未定义的键值返回
- sql - 为什么mysql连接不适用于dotenv变量
- python - 使用 ConvLSTM2D 时,“ValueError:步幅的长度应为 1、1 或 3,但为 2”
- python - 通过 groupby 更改数据框并应用
- mfc - CRecordset 返回定位请求无法执行
- c++ - 如何在 C++ 中输入多行字符串?
- node.js - 是否可以等待 fs.watch 在将所有文件拖放到目录时检测到所有文件?
- java - 为什么我不能移动数组初始值设定项?