【发布时间】:2016-10-24 14:05:56
【问题描述】:
尝试在 for 循环中串行使用 C 中的 scanf 和 printf 函数时,程序正在关闭。我在 Windows 7 上使用 CODE::BLOCKS。以下是代码。为什么会这样?
#include<stdio.h>
void main()
{
int i,A[i];
for(i=0;i<10;i++)
{
scanf("%d",&A[i]);
printf(" %d",A[i]);
}
}
【问题讨论】:
-
A[i]未定义,因为i未初始化。你应该改写A[10]。 -
您应该在托管环境中使用标准
int main(void)而不是void main(),这在C89 中是非法的并且在C99 或更高版本中实现定义,除非您有特殊原因使用非标准签名. -
以下替换的语句有效。 int i=0,A[i];
-
int i=0,A[i];调用未定义的行为。使用int i=10,A[i];或更好的int i; int A[10]; -
@Vikranth Inti “它应该显示警告或错误消息。” --> 不。正如 MikeCAT 所说,“实现定义的”意味着它可以在你的编译器/平台上工作,但由于它是非标准的,它可能无法在其他地方工作。