初始化一个包含 20 个元素的数组以稍后更新值,但数组的某些元素在 C 中以非零开始?这是为什么?

initializing an array of 20 elements to update values later, but some elements of the array start as non zero in C? why is that?

我正在尝试通过 K&R 解决目前在 ex 1.13 上的 C 编程语言问题,我注意到一些奇怪的行为,我需要有人向我解释为什么会这样。如果您查看下面的代码,它是该问题的一个粗略但有效的原型。

代码在字长为 9 之前工作正常。即 j<10,但如果我增加 j 循环说 j<20,试图增加它将显示的字长,它会让我陷入无限循环。

在尝试对其进行故障排除时,我注意到它可能会发生,因为 post 正在初始化我的数组,我的数组中的一些元素不是从 0 开始的,这正常吗?如果那是 为什么会这样?

#include<stdio.h>
int main(void)
{
    unsigned int     c;
    unsigned int     i;
    unsigned int     j;
    unsigned int     k;
    unsigned int     array[30];
    i = 0;
    j = 0;
    k = 0;
    while((c= getchar())!= EOF)
    {
        if((c==' ')|| (c == '\t')||(c=='\n'))
        {
            array[i]++ ;
            i = 0;
        }
        else{
            i++;
        }
    }
    for(j=1;j<10;j++)
    {
        printf("%d \t",j);
        for(k=0; k< array[j]; k++)
        {
            putchar('-');
        }
        putchar('\n');
    }
    return 0;
}

unsigned int array[30]; 只声明了一个包含 30 个槽的数组。 如果要将所有值初始化为 0,语法如下:

unsigned int array[30] = {0};