带阵列的简单C程序无法打印正确的输出

Tor*_*män 2 c gcc

我写了这个令人难以置信的愚蠢的代码

#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]);
            }
 }
Run Code Online (Sandbox Code Playgroud)

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

有帮助吗?

Car*_*rum 9

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

for (i = 0; i < 10; i++)
{
    new[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)

和:

for (i = 0; i < 10; i++)
{
    printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)

  • 未定义的行为未定义.任何事情都可能发生,包括正确行为的可能性. (3认同)