初始化一个包含 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};
我正在尝试通过 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};