日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
普通的Int main(){}沒有寫Return 0;會怎么樣?

本文轉(zhuǎn)載自微信公眾號「程序喵大人」,作者程序喵大人。轉(zhuǎn)載本文請聯(lián)系程序喵大人公眾號。

創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè)|成都網(wǎng)站維護公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設(shè)計服務(wù),案例作品覆蓋發(fā)電機租賃等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身開發(fā)品質(zhì)網(wǎng)站。

經(jīng)常在知乎上可以看到這個問題,于是嘗試著回答了一下,沒想到國內(nèi)C++巨佬吳詠煒老師還給我點了個贊,讓我相當(dāng)激動,下面具體介紹下!

結(jié)論可能大家看上面的圖就知道了,沒有加return 0;編譯器會自動添加一個。那怎么證明呢?

可以查看相應(yīng)的匯編代碼,查看匯編代碼推薦使用godbolt.org網(wǎng)站,相當(dāng)方便。

如上圖,輸入C++代碼,在右半部分會顯示編譯器編譯后的匯編代碼,通過查看高級語言背后的匯編指令我們可以更好的分析代碼的性能。網(wǎng)站更強大的功能是它支持市面上幾乎所有的編譯器,而且各個版本都有。

下面使用這個網(wǎng)站分析一波!

先看一段帶有return 0的截圖:

看我右面紅框圈出來的代碼,大家可以理解為eax就是main()函數(shù)的返回值,這里可以看到main()函數(shù)的返回值是0。

再看一段不帶return 0的相應(yīng)截圖:

可以發(fā)現(xiàn)編譯器還是把eax的值設(shè)為了0,由此可以理解為,即使在main函數(shù)中不寫return 0,編譯器還是會默認添加個return 0。

那其他非main函數(shù)也會默認添加個return 0嗎?

先看一個普通的帶有int返回值的函數(shù):

注意看func()中的eax寄存器被賦值為9,即func()的返回值為9。

如果不加return a是什么樣子?

可以看到,如果在func()內(nèi)不寫return語句,編譯器則沒有給eax寄存器更新值,那函數(shù)的返回值就不會是我們期待的樣子。

得出結(jié)論:正常一個帶有返回值的函數(shù),返回值都會存在某個地方,可能是棧上也可能是寄存器里,如果你不給它返回值,那可能外部獲取的返回值就是個奇奇怪怪的值,因為咱也不知道那塊地址是什么數(shù)據(jù)。

但是吧,main函數(shù)除外,因為main函數(shù)沒有return的話,編譯器會默認加個return 0;但個人認為這也確實是不好的習(xí)慣,mian函數(shù)會犯這種錯誤,其它函數(shù)估計也會這樣,所以最好所有的帶有返回值的函數(shù)都添加return xxx。

打完收工。


網(wǎng)頁標題:普通的Int main(){}沒有寫Return 0;會怎么樣?
本文路徑:http://www.dlmjj.cn/article/dpspose.html