【问题标题】:This programming is compiling but not running. Where's the error? [closed]该程序正在编译但未运行。错误在哪里? [关闭]
【发布时间】:2016-01-28 15:06:46
【问题描述】:
#include<stdio.h>

void main() {
   int a[3];
   a[0]=1;
   a[1]=2;
   a[2]=3;
   printf("%d", a[2]);
}

它没有显示任何错误或警告。但它没有运行

【问题讨论】:

  • 在我的机器上工作得很好。不过,您应该考虑添加 ` to the printf` 语句来强制刷新缓冲区。
  • 请正确格式化您的代码。
  • 是的,它确实可以运行,但速度如此之快,您甚至都看不到它。见this
  • 你怎么知道它没有运行?你如何运行程序。你的操作系统是什么?
  • 格式化是什么意思?

标签: c


【解决方案1】:
 void main(){

是非标准的。 main() 函数应该返回一个 int。一些 IDE/平台会检查进程的返回值。所以这可能是个问题。 将其更改为:

 int main(void){

如果您使用的是 C89,那么您还应该有来自 main() 的返回语句。自 C99 以来,这不是必需的。在 C99 和更高版本中,如果控件到达 main 的末尾,main() 将隐式返回成功,就像您在 main() 函数的末尾一样:return 0;

在 C89/C90 中,main() 的末尾必须有 return 0;return EXIT_SUCCESS;。否则,它会导致undefined behaviour。但这在 C99 和 C11 中不是必需的。除了这个,你的代码显然没有其他问题。因此,如果您仍有问题,则需要提供有关您的环境/编译器的更多详细信息。

【讨论】:

  • 你忘了在最后提到return 0;
  • @MichaelWalz:main 不需要这样做! port70.net/~nsz/c/c11/n1570.html#5.1.2.2.3p1
  • @MichaelWalz 从 C99 开始,不需要来自 C99 的显式 return。尽管如此,值得添加。
  • @ChayanKathuria “不会运行”没有提供有关失败的任何有用信息。 究竟会发生什么?它不提供输出/崩溃?你的代码没有问题。所以这是您的环境/编译器或恶意软件不允许您运行可执行文件等问题。
  • @ChayanKathuria 可能是输出和退出windows,在main()的末尾加上system("pause");,在"return 0;`前。