无法使用for循环在C中打印数组

标签 c codeblocks

所以我有这个代码

#include <stdio.h>

main()
{
  int a[10];
  int i= 0;

  for (i=0; i<11; ++i){
      a[i] = 0;
  }
  for(i=0; i<11; ++i){
      printf("%d", a[i]);
  }
}

我读过 Dennis Ritchie 的《C》一书,在我的期望中,它应该像这样打印出来

0 0 0 0 0 0 0 0 0 0

但是当它运行时,只是空白,没有打印任何内容 请帮我解决我的问题

最佳答案

您声明了一个包含 10 个元素的数组。

int a[10];

在这种情况下,索引的有效范围是 [0, 9],也就是说,如果您有一个包含 N 元素的数组,则该数组的索引的有效范围是[0, N-1]

因此您需要按以下方式更改程序中的循环

for (i=0; i< 10; ++i)

最好定义一个明显常量并使用它来代替神奇的数字 10,例如

#define N 10

//...

int a[N];

for (i=0; i < N; ++i)

或者至少在循环表达式中使用

for (i=0; i < sizeof( a ) / sizeof( *a ); ++i)

如果像这样声明数组,可以获得相同的效果

int a[10] = { 0 };

并在最后一个循环语句之后插入

puts( "" );

printf( "\n" );

关于无法使用for循环在C中打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33456202/

相关文章:

c++ - 使用注入(inject)的 DLL 代码干扰 Win32 消息循环 (SetWindowsHookEx)

c - c中scanf 3次不起作用?

c - 为什么下面的代码不能正确输出所有测试用例?

c++ - 错误 : Range-based 'for' loops are not allowed in C++98 mode

c# - 什么时候使用代码块?

Code::Blocks with MinGW compiler - fprintf 导致空文件

c - 段错误 11

c - float 不相等,尽管相同?

c - C 编程语言是否有提供词汇表等数据结构的标准库

c - 宏中的参数计数