C++ for循环索引i的含义及更新规则相关疑问
问题解答
for循环的执行逻辑
C++中for循环的结构固定为:
for(初始化语句; 循环判断条件; 循环后更新语句) { 循环体代码 }
执行顺序严格遵循:
- 进入循环前仅执行1次初始化语句,你代码中就是
int i = 0,i的初始值被设为0 - 每次执行循环体前,先判断循环条件是否为真,你代码中就是判断
i < n,为真才会进入循环体 - 循环体执行完毕后,自动执行一次循环后更新语句,再回到上一步判断循环条件
你代码的问题&i的更新逻辑
你当前代码的循环更新语句写的是i+2,这个表达式只会计算i加2的结果,但不会把结果赋值回给i本身,所以i的值会永远停留在初始值0,只要你输入的n大于0,代码会直接进入死循环,既不会加2也不会加3。
如果你是笔误想写i += 2(也就是把i+2的结果赋值回i),那i的更新规则就是每次循环后加2,取值依次为0、2、4...直到不满足i < n的条件为止,不存在加3的情况,完全遵循你在更新语句中设定的逻辑。
补充代码的其他错误
- 关键字
for首字母不能大写,你写的For会直接编译报错 - C++标准不支持
int arr[n]这种可变长度数组(n是运行时输入的变量),这是C99的特性,仅部分编译器支持,符合标准的写法是用std::vector:#include <vector> // 读取n之后替换数组定义为 std::vector<int> arr(n);
关于索引i的概念补充
你提到不理解i作为索引的概念,这里的i本质就是一个普通的整型变量,只是我们用它的值来对应数组元素的位置:C++中数组下标从0开始,arr[0]是数组的第一个元素,arr[1]是第二个,以此类推,你给i设定什么更新规则,它就会按规则取对应位置的数组元素。
内容的提问来源于stack exchange,提问作者Nozy
相关产品推荐
相关产品推荐

