2016-01-28 70 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'。儘管如此,值得加入。 –

相關問題