c - 初始化一个包含 20 个元素的数组以稍后更新值,但数组的某些元素在 C 中以非零开头?这是为什么?
问题描述
我试图通过 K&R 目前在 ex 1.13 上解决 C 编程语言的问题,我注意到一些奇怪的行为,我需要有人向我解释为什么会发生这种情况。如果您查看下面的代码,它是该问题的一个粗略但有效的原型。
代码工作正常,直到字长为 9。即 j<10,但如果我增加 j 循环以说 j<20,试图增加它将显示的字长,它会让我陷入无限循环。
在尝试对其进行故障排除时,我注意到它可能会发生,因为初始化我的数组后,我的数组中的一些元素一开始就不是 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};
推荐阅读
- javascript - 循环遍历构造函数中的类键?
- ms-access - 可以在查询 SQL 语句中传递变量吗?
- character-encoding - 连接和 Python 中的编码不匹配
- r - 重叠的时期,通过 R 的 ID 对活动进行分组
- image - 如何用图像填充整个框架?
- python - 如何重构此递归策略表达式 Strategy 以参数化其长度?
- powershell - Powershell将进程的pid添加到FileVersionInfo
- php - How to insert href link in this button tag
- python - Python Regex: AttributeError: 'str' object has no attribute 'Match'
- javascript - 创建递归表单元素