2016-01-28 19 views
-2
#include<stdio.h> 

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

它没有显示任何错误或警告。但它没有运行此编程正在编译但未运行。错误在哪里?

+0

在我的机器上工作得很好。不过,您应该考虑在'printf'语句中添加'\'来强制缓冲区刷新。 – Mureinik

+0

请正确格式化您的代码。 –

+0

是的,它运行,但如此之快,你甚至不能看到它。见[这个](http://stackoverflow.com/questions/1864029/how-do-you-keep-the-console-from-closing-after-the-program-is-done-in-c) –

回答

1
void main(){ 

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

int main(void){ 

如果你正在使用C89,那么你也应该从main()有一个return语句。从C99开始这不是必需的。在C99和更高版本中,如果控件到达主结尾,main()将隐式返回成功,就像您在main()函数结束时有:return 0;一样。

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

+0

你忘了在最后提到'return 0;'。 –

+0

@MichaelWalz:'main'不需要! http://port70.net/~nsz/c/c11/n1570.html#5.1.2.2.3p1 – Olaf

+0

@MichaelWalz自C99以来,不需要从C99显式返回'return'。尽管如此,值得加入。 –

相关问题