C 和 C++ 中的mian函式解析
阿新 • • 發佈:2019-02-13
main函式的返回值:
return
返回的數值由程式的作者自定。返回不同的值可以代表不同的含義,一般是代表出錯的原因,傳統上返回0
代表程式正常結束。
main
函式的返回值用於說明程式的退出狀態。如果返回0
,則代表程式正常退出,否則代表程式異常退出。
在C89
(C語言的早期標準)中,main()
是可以接受void
返回值的。Brian W. Kernighan 和Dennis M. Ritchie 的經典鉅著 The C programming Language(《C 程式設計語言》)用的就是void main()
。不過在最新的C99
標準中,只有以下兩種定義方式是正確的:
int main(void)
int main(int argc, char *argv[])
如果你不需要從命令列中獲取引數,請用int main( void )
;否則請用int main(int argc, char *argv[])
。
main
函式的返回值型別必須是int
,這樣返回值才能傳遞給作業系統。
如果main
函式的最後沒有寫return
語句的話,C99
規定編譯器要自動在生成的目標檔案中(如exe
檔案)加入return 0
,表示程式正常退出。注意,vc6
不會在生成的目標檔案中加入return 0
。不過,gcc3.2
(Linux
下的 C
編譯器)會在生成的目標檔案中加入return 0
C++98
(C++
語言的一個標準)中定義瞭如下兩種main
函式的定義方式:
int main()
int main(int argc, char *argv[])
int main()//等同於C99中的int main(void);
int main(int argc, char *argv[])
的用法也和C99
中定義的一樣。同樣,main
函式的返回值型別也必須是int
。如果main
函式的末尾沒寫return
語句,C++98
規定編譯器要自動在生成的目標檔案中加入return 0
。同樣,vc6
也不支援這個特性,但是g++3.2
(Linux
下的C++
編譯器)支援。
在C
C++
中,不接收任何引數也不返回任何資訊的函式原型為void foo(void);
。main
函式的返回值應該定義為int
型別,C
和C++
標準中都是這樣規定的。雖然在一些編譯器中,void main
可以通過編譯(如vc6
),但並非所有編譯器都支援void main
,因為標準中從來沒有定義過void main
。g++3.2
中如果main
函式的返回值不是int
型別,就根本通不過編譯。而gcc3.2
則會發出警告。所以,如果你想你的程式擁有很好的可移植性,請一定要用int main
。 main
函式的返回值用於說明程式的退出狀態。如果返回0
,則代表程式正常退出,否則代表程式異常退出。 任何一個
C++
程式都必須定義一個main
函式,它的返回型別總是int
型別。這個函式由作業系統來呼叫,在main
函式執行完以後,程式也就終止了。main
也可以使用return
向作業系統返回一個值,使用作業系統的命令可以檢測main
的返回值。一般約定在main
返回0
時,表示程式執行過程中沒有出現錯誤,其它非零值表示程式出現異常情況。 在大多數系統中,
main
函式的返回值是一個狀態指示器。返回值0
往往表示main
函式成功執行完畢。任何其他非零的返回值都有作業系統定義的含義。通常非零返回值表明有錯誤出現。每一種作業系統都有自己的方式告訴使用者main
函式返回什麼內容。