数组遍历自增未生效?循环连续输出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
相关产品推荐
相关产品推荐

