青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 16,  comments - 34,  trackbacks - 0

一、依據

C++標準規定:main函數可以省略返回語句,等效于返回0。

5. A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument.
If control reaches the end of main without encountering a return statement, the effect is that of executing
return 0;

                ——ISO C++03 3.6.1 Main function p44/72
                ——ISO C++98 3.6.1 Main function p43/69

注意:
1. main函數的返回類型是int, 不是void或者其他類型。
2. 該規則僅僅對main函數適用。
3. 對其他函數,如果省略返回值, 將得到一個警告
4. 應該避免3的情況。




二、 示例

        二、1. 一個合法的最小化的完整C++程序如下:
int main() {}

        二、2. 省略的確切含義

同時,標準中的用語是很考究的:
“當控制到達main結束處時沒有遇到return語句,效果與返回0相同”。

即是說,標準規定的是“對省略return的分支,認為返回0”。
同時,標準也允許其他分支含有返回語句。
如下:
int main(int argc,char* []) {
    
switch (argc)
    {
    
case 1:
        
// error, should passing argument
        return -1;
        
// parse arguments
    default:
    
case 3// parser argv[2]
    case 2// parser argv[1]
        ;
    }
    
// do some work
    
// control reaches here
}

沒有輸入命令行參數時, 返回一個錯誤。
其他情況,當控制達到main的結尾處時,效果同return 0;

        二、3. 對于其他函數,沒有這種“優待”
如:
int not_main(int argc) {
    
if (argc<=1)
        
return -1;
}
int main(int argc,char* []) {
    
return not_main(argc);
}

not_main無疑將得到一個警告。
程序在沒有輸入命令行參數時的返回值將無法預知



三、驗證

        三、1. ERRORLEVEL

windows下,可以通過 %ERRORLEVEL% 查詢上一次程序返回值。

結果與判斷相吻合:
1. minimalist有確定的返回值0
2. omit_return_in_main有確定的返回值-1或0
3. 對omit_return_in_other
3.1 有命令行參數時,返回值確定為0。
3.2 無命令行參數時,返回值無法預知


        三、2 匯編代碼

更嚴謹的驗證方法是查看匯編代碼。

可以看到,在minimalist與omit_return_in_main的main函數中都有將eax置0的代碼。
在omit_return_in_other中的not_main函數中,沒有這樣的代碼。




四、 例外

VC6在這點上與標準不符。

        四、1. 對omit_return_in_main,它給出的警告:

warning C4715: 'main' : not all control paths return a value

說明它在這點上與標準不符。
顯然,在有命令行參數的時候,程序結果無法預知


        四、2. 對minimalist,它給出的警告很搞笑:

warning C4508: 'main' : function should return a value; 'void' return type assumed

暴露出它另一個與標準不符的地方——main返回void。
顯然,任何情況下,程序結果都無法預知

        四、3. 對omit_return_in_other,是程序員的錯誤。




五、 實踐

不知道為什么C++標準在這里開一個“后門”。
——C++在許多地方都是很嚴謹的。

在實際應用中,盡量不要采用這一特性, 因為:
1. 舊編譯器不支持
2. C不支持——如果希望main能同時按C語言編譯的話

對于演示用的C++代碼,與主題無關的代碼行能省則省,則可以使用這一特性。
比如:C++標準中的示例代碼幾乎都采用了這一特性。
由此可得出,C++標準在這里開后門的原因是——讓C++標準更薄^_^



相關鏈接:

——示例代碼
http://immature.googlecode.com/svn/trunk/iMmature/sample/omit_return_in_main



Creative Commons License
作品采用知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可。

轉載請注明 :
文章作者 - OwnWaterloo
發表時間 - 2009年04月26日
原文鏈接 - http://m.shnenglu.com/ownwaterloo/archive/2009/04/26/omit_return_in_main.html

posted on 2009-04-26 14:37 OwnWaterloo 閱讀(3499) 評論(1)  編輯 收藏 引用

FeedBack:
# re: main函數中省略返回語句[未登錄]
2013-04-14 23:22 | null
LOL  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(8)

隨筆檔案(16)

鏈接

搜索

  •  

積分與排名

  • 積分 - 199014
  • 排名 - 134

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区三区电影在线观看| 国产美女精品| 亚洲日本va在线观看| 亚洲自拍电影| 亚洲伦理自拍| 亚洲黄页视频免费观看| 国产亚洲精品久久久| 国产九区一区在线| 亚洲黄色免费电影| 欧美高清视频免费观看| 欧美成人一区二区三区在线观看 | 毛片av中文字幕一区二区| 欧美一级播放| 久久成人18免费观看| 欧美一区二区黄色| 欧美在线观看天堂一区二区三区| 亚洲国产经典视频| 亚洲三级免费| 日韩视频在线观看免费| 一区二区三区三区在线| 亚洲天堂网在线观看| 性久久久久久久久久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 一区二区日韩免费看| 亚洲自拍另类| 久久在线观看视频| 欧美人牲a欧美精品| 欧美区一区二| 国产精品自拍在线| 好吊日精品视频| 亚洲大片免费看| 日韩亚洲欧美在线观看| 午夜精品久久久久久久白皮肤| 欧美与黑人午夜性猛交久久久| 亚洲欧美一级二级三级| 久久久xxx| 亚洲高清视频在线| 一区二区三区欧美| 久久精品亚洲一区二区三区浴池| 亚洲精品国产视频| 在线观看欧美日韩| 亚洲精品一区二区三区不| 在线一区二区三区做爰视频网站| 亚洲欧美国产精品专区久久| 你懂的视频欧美| 国产精品99久久久久久宅男| 一区二区三区四区蜜桃| 久久久人成影片一区二区三区| 欧美日韩成人一区| 国产精品久久久久影院色老大| 在线看国产日韩| 亚洲欧美日韩爽爽影院| 欧美成人性生活| 午夜在线视频一区二区区别| 欧美精品九九| 精品9999| 久久久91精品国产| 一本综合精品| 欧美aⅴ一区二区三区视频| 国产精品久久久久aaaa| 亚洲一区中文| 亚洲综合欧美日韩| 国产毛片精品国产一区二区三区| 亚洲一区二区成人在线观看| 99精品免费视频| 国产精品xvideos88| 亚洲一区在线直播| 亚洲一区欧美| 国内精品一区二区三区| 老司机午夜免费精品视频| 久久久人成影片一区二区三区观看 | 99在线精品免费视频九九视| 亚洲国产精品成人综合| 欧美激情一区二区三区蜜桃视频| 日韩视频在线永久播放| 一本久道久久综合中文字幕 | 亚洲精品123区| 亚洲狠狠丁香婷婷综合久久久| 欧美美女操人视频| 欧美一级成年大片在线观看| 欧美专区福利在线| 亚洲精品久久7777| 一本大道久久精品懂色aⅴ| 国产精品一区=区| 裸体歌舞表演一区二区| 欧美电影电视剧在线观看| 亚洲欧美清纯在线制服| 久久久蜜桃精品| 亚洲一区二区在线免费观看| 亚洲欧美资源在线| 亚洲激情网站免费观看| 一区二区三区不卡视频在线观看 | 欧美久久精品午夜青青大伊人| 亚洲网站在线观看| 久久精品国产第一区二区三区| 亚洲人成人一区二区在线观看| 一本久道久久综合婷婷鲸鱼| 国产亚洲一级高清| 亚洲美女av黄| 在线看国产日韩| 中文精品99久久国产香蕉| 亚洲电影免费观看高清完整版在线观看 | 在线观看欧美黄色| 亚洲亚洲精品三区日韩精品在线视频| 国产综合av| 亚洲一区在线免费| 亚洲人在线视频| 久久成人免费日本黄色| 亚洲在线免费| 欧美国产视频日韩| 美国成人直播| 国产欧美一区二区视频| 亚洲精品乱码久久久久久蜜桃91| 韩国一区二区三区美女美女秀| 一本色道久久综合亚洲二区三区| 18成人免费观看视频| 欧美一区二区三区四区在线| 亚洲午夜免费福利视频| 老司机一区二区| 久久久美女艺术照精彩视频福利播放| 欧美精品videossex性护士| 葵司免费一区二区三区四区五区| 欧美午夜一区| 日韩亚洲视频在线| 日韩一二在线观看| 欧美.com| 欧美激情小视频| 有坂深雪在线一区| 久久精品视频在线观看| 久久久久se| 国产三级精品在线不卡| 亚洲一区在线免费观看| 欧美一级一区| 国产欧美在线播放| 亚洲免费综合| 午夜精品久久久久久99热软件 | 1024精品一区二区三区| 久久精品欧洲| 玖玖玖国产精品| 在线激情影院一区| 久久久久久久久伊人| 久久综合给合久久狠狠色| 在线日本高清免费不卡| 美女精品国产| 亚洲国产老妈| 中国成人黄色视屏| 国产精品激情| 午夜精品美女久久久久av福利| 久久精品国产第一区二区三区| 国语自产精品视频在线看| 久久中文字幕一区| 亚洲在线第一页| 一片黄亚洲嫩模| 性欧美18~19sex高清播放| 国产精品一区二区三区成人| 亚洲欧美中文日韩v在线观看| 久久性天堂网| 亚洲精品视频在线观看网站| 欧美先锋影音| 欧美在线观看视频| 亚洲国产美女久久久久| 亚洲欧美www| 亚洲成人资源| 国产精品v欧美精品v日韩| 亚洲一区二区三区乱码aⅴ| 久久综合精品一区| 在线亚洲精品| 黑人操亚洲美女惩罚| 欧美高清视频一区二区| 亚洲一区二区三区午夜| 免费一区视频| 亚洲欧美视频一区二区三区| 韩国av一区二区三区四区| 欧美看片网站| 欧美影院成年免费版| 亚洲欧洲在线免费| 久久久久久久尹人综合网亚洲| 日韩亚洲视频在线| 狠狠色综合日日| 国产精品成人播放| 欧美成人日韩| 欧美一区二区精品久久911| 亚洲激情女人| 美女成人午夜| 久久岛国电影| 亚洲欧美日韩综合国产aⅴ| 亚洲日本成人网| 激情欧美国产欧美| 国产精品香蕉在线观看| 欧美日韩精品综合| 欧美69视频| 久久夜色精品国产噜噜av| 欧美一区二区三区免费视| 99亚洲一区二区| 亚洲激情在线观看| 欧美+日本+国产+在线a∨观看| 久久成人一区| 性色av香蕉一区二区| 亚洲一区二区三区高清不卡| 日韩视频在线观看国产|