我写了这个令人难以置信的愚蠢代码
#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进行调试时也是如此。它运行然后保持闪烁的光标。
任何帮助?
答案 0 :(得分:9)
C数组被索引为0 - 您的程序在new
数组的边界之外写入,因此它会导致未定义的行为。在这种情况下,您可能会覆盖i
变量,因此最终会出现无限循环。你需要改变你的循环:
for (i = 0; i < 10; i++)
{
new[i] = 0;
}
和
for (i = 0; i < 10; i++)
{
printf("%d", i);
}
答案 1 :(得分:1)
你需要有一个新的行字符来查看输出,或者刷新标准输出,否则有时它不会打印,或者它将与下一行结合...尝试:
printf("%d\n", new[i]);
另外,将for循环设置为0到9
答案 2 :(得分:1)
int new[10]
- 这里new
数组可以存储10个整数类型的元素。您可以从数组的第0到第9个索引访问这些元素。访问超过第9个索引是未定义的行为。