You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组遍历自增未生效?循环连续输出10次0的原因咨询

为啥你的代码连续输出10次0?

嘿,咱们一步步拆解你代码里的问题,就能搞明白为啥和预期不一样啦:

1. 先纠正一个语法笔误

你写的ARRAY_SIZE[10] = {0};明显是写错了——这行的意图应该是声明一个长度为10的数组并初始化,正确的写法是:

int array_of_ints[10] = {0};

要是没声明对array_of_ints,你的代码其实连编译都过不了,先假设这只是你输入时的手滑~

2. 核心问题:数组元素根本没被赋值!

在C语言里,用int array_of_ints[10] = {0};初始化数组时,所有元素都会被默认设为0(哪怕你只显式写了第一个元素是0)。而你的循环里只做了一件事:打印数组的第i个元素,完全没给array_of_ints[i]赋过值啊!

你误以为++i会让数组元素变成0到9,但i只是循环的计数器而已,它和数组元素的取值半毛钱关系都没有——数组元素从始至终都是初始化的0,循环10次可不就全输出0嘛。

3. 循环条件的小坑

你的循环条件是i < ARRAY_SIZE,但如果没提前用#define ARRAY_SIZE 10定义这个宏,代码也会编译报错。更稳妥的写法是直接写i < 10,或者用sizeof自动计算数组大小:

for(i = 0; i < sizeof(array_of_ints)/sizeof(array_of_ints[0]); ++i ) {

想要输出0到9?这么改就行

如果你想让数组元素输出0到9,得在循环里给数组赋值,或者直接打印循环变量i就行,比如:

#include <stdio.h>

int main() {
    int array_of_ints[10] = {0}; 
    int i; 
    for(i = 0; i < 10; ++i ) { 
        array_of_ints[i] = i; // 给数组元素赋值为当前循环的i值
        printf("After assignment %d\n", array_of_ints[i]); 
    }
    return 0;
}

跑这段代码就能得到你预期的0到9的输出啦。

内容的提问来源于stack exchange,提问作者pumkinthatcodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:16:58