3 回答

TA貢獻1773條經驗 獲得超3個贊
1.void main()
有一些書上的,都使用了void main( ) ,其實這是錯誤的。C/C++ 中從來沒有定義過void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主頁上的 FAQ 中明確地寫著 “The definition void main( ) { /* … */ } is not and never has been C++, nor has it even been C.”
這可能是因為 在 C 和 C++ 中,不接收任何參數也不返回任何信息的函數原型為“void foo(void);”??赡苷且驗檫@個,所以很多人都誤認為如果不需要程序返回值時可以把main函數定義成void main(void) 。然而這是錯誤的!main 函數的返回值應該定義為 int 類型,C 和 C++ 標準中都是這樣規定的。雖然在一些編譯器中,void main() 可以通過編譯,但并非所有編譯器都支持 void main() ,因為標準中從來沒有定義過 void main 。g++3.2 中如果 main 函數的返回值不是 int 類型,就根本通不過編譯。而 gcc3.2 則會發出警告。所以,為了程序擁有很好的可移植性,一定要用 int main ()。
2.main()
那既然main函數只有一種返回值類型,那么是不是可以不寫?規定:不明確標明返回值的,默認返回值為int,也就是說 main()等同于int main(),而不是等同于void main()。在C99中,標準要求編譯器至少給 main() 這種用法來個警告,而在c98中這種寫法是被允許的。但為了程序的規范性和可讀性,還是應該明確的指出返回值的類型。
3.return 0語句 功能
在C++的程序中,如果你自己寫了個子函數。那return的意思是告訴主函數,這個子函數的運行結果,那么同樣的道理,main也是個函數,它運行了自然也是有結果的,這個結果通常是告訴操作系統,自身是正常運行結束了(值為0),還是發生了異常(這個值就有很多了)。告訴操作系統值是多少,目的是后臺或者SHELL可以從操作系統中取得這個程序的運行結果,從而可以進行進一步操作,比如,你現在這個程序名叫A,是個清屏程序,那么我想在這個程序運行正常后在屏幕上輸出運行了。這個輸出是由另外一個B程序實現的,那么如果沒有返回值,怎么知道這個程序運行正常還是不正常呢。上面的是main函數返回值最常用的作用。當然。其實main函數本身是可以調用這個返回值的,這個的作用就在于多線程的編程中,另外一個線程等待這個程序執行完畢,等待的就是這個MAIN函數的執行結果。

TA貢獻1839條經驗 獲得超15個贊
你的理解有誤。首先,這段代碼是先執行了輸出99在屏幕上,然后在退出之前才返回的0。而不是正常退出了之后系統才去處理輸出。其次,返回多少是程序員自己控制的,你喜歡將你上面代碼的return 0改成return -1,程序就返回-1出去。另外,程序出錯的時候,也不會自動返回什么值給系統,全都是程序員自己代碼控制。而至于返回出去的值怎么使用,也不是操作系統自己處理,而是外部調用的人自己根據需要控制。例如如果B程序是被A程序在程序中調用的,A程序就可以檢查B程序的返回值來進行相應處理。而一些腳本,批處理也可以檢查程序返回值來進行正確的操作。至于返回什么代表什么,是這個程序的開發者自己制定。只是,一般習慣上,都在運行正常,正常退出的時候return 0.

TA貢獻1872條經驗 獲得超4個贊
打印語句是立即執行,所以理想的情況是先打印99,然后退出main函數,只不過,打印的數據立即會交給串口驅動然后才退出main函數,而串口驅動是有自己的緩存的,所以會有一定延遲。
執行賦值操作出錯,系統會做出不同響應,這個要取決于具體的錯誤類型,比如訪問空指針、除數為0都是嚴重錯誤而停止進程
函數返回值的意義是程序員定義的,函數外部根據這個定義來決定函數運行的情況,比如我可以讓函數返回0來代表函數執行失敗,也可以定義-10來代表執行失敗。
- 3 回答
- 0 關注
- 164 瀏覽
添加回答
舉報