Re: [問題] main function 後面要不要加 return 0?
我會這麼肯定的覺得要加,是因為之前遇過這種情況:
=== test.c ===
int main() {
}
=== test.c ===
james732@james:~$ gcc test.c -o test
james732@james:~$ ./test; echo $?
4
james732@james:~$ ./test; echo $?
244
james732@james:~$ ./test; echo $?
20
讓我發現:如果沒有加上 return 0; 的話
main 的回傳值會是一個任意值,因此還是有加比較好
(雖然大部份的情況並不會去理會 main 回傳啥...)
不過看到板主的推文後,用一樣的程式再試試看:
james732@james:~$ gcc test.c -o test -std=c99
james732@james:~$ ./test; echo $?
0
james732@james:~$ ./test; echo $?
0
james732@james:~$ ./test; echo $?
0
james732@james:~$ g++ test.c -o test
james732@james:~$ ./test; echo $?
0
james732@james:~$ ./test; echo $?
0
james732@james:~$ ./test; echo $?
0
結果很明顯了,就像版主說的
如果是C99或C++的話,main就算沒有return 0;也是回傳0,因此沒寫也無所謂
--
測試環境:Ubuntu Linux i386 + gcc 4.4.5
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
※ 編輯: james732 來自: 140.117.171.46 (04/27 16:23)
推
04/27 16:24, , 1F
04/27 16:24, 1F
如果編譯的時候沒有指定 -std=c99 的話,還是會用 c90 去編的
這樣就會出現 main 亂丟回傳值的情況
※ 編輯: james732 來自: 140.117.171.46 (04/27 16:25)
→
04/27 16:26, , 2F
04/27 16:26, 2F
推
04/27 16:26, , 3F
04/27 16:26, 3F
→
04/27 16:35, , 4F
04/27 16:35, 4F
→
04/27 16:37, , 5F
04/27 16:37, 5F
推
04/27 16:39, , 6F
04/27 16:39, 6F
→
04/27 16:40, , 7F
04/27 16:40, 7F
推
04/27 16:56, , 8F
04/27 16:56, 8F
→
04/27 17:37, , 9F
04/27 17:37, 9F
囧,我誤會了,感謝提醒 XD
※ 編輯: james732 來自: 140.117.171.46 (04/27 17:41)
推
04/27 19:02, , 10F
04/27 19:02, 10F
推
04/27 21:45, , 11F
04/27 21:45, 11F
討論串 (同標題文章)