2

我写了这段非常愚蠢的代码

#include <stdio.h>
main(){
    int new[10], i;
    for(i=1; i<=10; ++i){
            new[i] = 0;
            }

for(i=1;i<=10; ++i)
            {
                    printf("%d", new[i]);
            }
 }

我在 Xubuntu 上使用 GCC 编译了这个,然后做了 ./a.out。光标只是闪烁导致没有输出。尝试使用 gdb 进行调试时也是如此。它运行,然后停留在闪烁的光标上。

有什么帮助吗?

4

3 回答 3

9

C 数组的索引为 0 - 您的程序写入数组边界之外new,因此会导致未定义的行为。在这种情况下,您可能正在覆盖i变量,因此最终会出现无限循环。你需要改变你的循环:

for (i = 0; i < 10; i++)
{
    new[i] = 0;
}

和:

for (i = 0; i < 10; i++)
{
    printf("%d", i);
}
于 2013-07-23T17:01:53.617 回答
1

您需要有一个换行符才能看到输出,或者刷新标准输出,否则有时它不会打印,或者它将与下一行结合...尝试:

printf("%d\n", new[i]);

另外,将你的 for 循环设置为 0 到 9

于 2013-07-23T17:02:07.303 回答
1

int new[10]- 这里new数组可以存储 10 个整数类型的元素。您可以从数组的第 0 到第 9 个索引访问这些元素。访问超过第 9 个索引是未定义的行为。

于 2013-07-23T17:06:23.070 回答