所以我有这个代码
#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)的书,并且在我的期望中它应该像这样打印出来
0 0 0 0 0 0 0 0 0 0
但是当它运行时,只是空白,没有打印出来 请帮我解决我的问题
答案 0 :(得分:3)
您声明了一个包含10个元素的数组。
function _spYield(b, a) {
if (a > 0)
window.setTimeout(function() {
_spYield(b, a - 1)
}
, 0);
else
b()
在这种情况下,索引的有效范围是int a[10];
,如果您有一个[0, 9]
元素数组,那么数组的有效索引范围是N
。
因此,您需要以下列方式更改porgram中的循环
[0, N-1]
最好定义清单常量并使用它而不是幻数10,例如
for (i=0; i< 10; ++i)
或至少在循环表达式中使用
#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( "" );
答案 1 :(得分:1)
输出缓冲区尚未刷新到控制台/终端。在printf
循环
printf("\n");
此外,您的数组应该是
int a[11];
以便索引保持在范围内。