#include<stdio.h>
void main() {
int a[3];
a[0]=1;
a[1]=2;
a[2]=3;
printf("%d", a[2]);
}
它沒有顯示任何錯誤或警告。但它沒有運行此編程正在編譯但未運行。錯誤在哪裏?
#include<stdio.h>
void main() {
int a[3];
a[0]=1;
a[1]=2;
a[2]=3;
printf("%d", a[2]);
}
它沒有顯示任何錯誤或警告。但它沒有運行此編程正在編譯但未運行。錯誤在哪裏?
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中這不是必需的。除此之外,代碼中顯然沒有其他問題。所以如果你仍然有問題,你需要提供更多關於你的環境/編譯器的細節。
你忘了在最後提到'return 0;'。 –
@MichaelWalz:'main'不需要! http://port70.net/~nsz/c/c11/n1570.html#5.1.2.2.3p1 – Olaf
@MichaelWalz自C99以來,不需要從C99顯式返回'return'。儘管如此,值得加入。 –
在我的機器上工作得很好。不過,您應該考慮在'printf'語句中添加'\'來強制緩衝區刷新。 – Mureinik
請正確格式化您的代碼。 –
是的,它運行,但如此之快,你甚至不能看到它。見[這個](http://stackoverflow.com/questions/1864029/how-do-you-keep-the-console-from-closing-after-the-program-is-done-in-c) –