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

  C++博客 :: 首頁 ::  :: 聯系 ::  :: 管理

一個語言細節問題

Posted on 2006-09-11 19:01 chenger 閱讀(745) 評論(3)  編輯 收藏 引用 所屬分類: Programming Stuff
這回還是一個語言細節問題:求值順序,副作用等等。說白了和v[i]=i++是差不多的。不關心這類細枝末節的朋友們可以不用看了。

程序如下:

#include <iostream>

int
g(int i)
{
??? return i;
}

int main()
{
??? int i = 1;
??? std::cout << i*g(i++);
??? return 0;
}

起因是csdn上的一個帖子。我本來認為這是一個和實現有關的問題,屬于標準中未指定行為的那一類。在求值i*g(i++)時,左序和右序都是有可能的,結果分別為1和2。在我的Visual C++ 2005 Express上跑,結果是1,而g++ 3.4.2的結果為2。VC 2005相當狠,把i的自增一直排到了整個std::cout << i*g(i++);的后面!

而那個帖子里給的程序是這樣的(一看感覺就很像那些計算機等級考試的鳥題目)

#include <iostream>

int f(int n)
{
??? if(++n == 5)
??????? return n++;
??? return n*f(n++);
}

int main()
{

??? std::cout << f(
1);
??? return 0;
}

歧義或者說問題也是n*f(n++)這一句。我拿Visual C++ 2005 Express和g++ 3.4.2分別跑了一下,結果是120(對應于左序)和300(右序)。但csdn上有人拿VS 2005 Team版和VC 6.0測試,結果都是300。打死我都不相信VS 2005 Team和Visual C++ 2005 Express的C++編譯器會有什么差別。而且我嘗試了好幾個可能有影響的編譯選項,例如優化,是否禁用語言擴展(/Za),以及release和debug,結果都是120。我機子上沒有VS 2005 Team,所以沒辦法驗證。誰能告訴我這到底是怎么一回事?

Update:終于找了一臺有Visual Studio 2005 Team Suite的機器來驗證上面的程序,和我的Express版運行結果完全相同。但是還是有不少朋友說他們測試的結果是300。此外,還有的是在debug下結果為300,而release下結果是120!簡直亂套了。

結論:得歸功于csdn網友ugg的反復測試。關鍵問題是Visual C++編譯器的運行時檢查選項。默認情況是/RTCs,即stack frame run-time error checking,此時運行結果是120;如果打開了/RTCu,msdn上的解釋是Reports when a variable is used without having been initialized,那么結果就是300。可見,在沒有打開/RTCu的時候,編譯器把n++這個副作用放到了整個full-expression的后面,可能是因為編譯器認為n++對表達式的求值沒有影響。至于左序右序的問題,我仍然難以下結論。在打開了/RTCu的情況下,不管是n*f(n++)或f(n++)*n結果都是300,否則結果都是120。

我的想法是:編譯器之所以敢這么優化(這并不算是太大的優化),前提就是這個求值順序本來就是unspecified,編譯器可以自由發揮。當然,左序右序的問題可能不是那么關鍵。這仍然是一個依賴于編譯器實現的問題,而不是語法問題。

Feedback

# re: 一個語言細節問題  回復  更多評論   

2006-09-12 09:14 by 夢在天涯
我的在vs2005中,debug和release中都是120啊,



這個運算符的執行順序,每個編譯器是不同的啊,這個很正常的


也有可能vs中可以設置她的順序,是從左到右,或從右到左.到我沒有找到資料,那位找到,也來這里給大家share一下,thx!

# re: 一個語言細節問題  回復  更多評論   

2006-09-12 12:55 by chenger
問題好像是自增運算符到底在什么時候被求值

# re: 一個語言細節問題  回復  更多評論   

2006-10-24 11:17 by 五點半
等級考試中的爛題真是比比皆是。一次參加職稱考試,明顯一個解引用野指針,還讓寫運行結果!
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩一区二区欧美激情| 欧美一二三区精品| 小黄鸭视频精品导航| 久久婷婷国产综合精品青草| 国产精品成人在线| 国产在线欧美日韩| 亚洲人成绝费网站色www| 久久久久在线| 亚洲天堂黄色| 久久免费偷拍视频| 亚洲第一中文字幕在线观看| 欧美日韩成人综合| 国产日韩精品一区观看| 久久国产精品久久久久久| 亚洲精品久久嫩草网站秘色| 欧美国产一区二区在线观看| 国产一区二区黄色| 久久成年人视频| 午夜一级在线看亚洲| 在线观看日韩欧美| 美女啪啪无遮挡免费久久网站| 亚洲一区二区精品视频| 国产精品久久97| 在线一区二区三区四区| 99在线精品视频| 国内精品久久久| 亚洲欧洲视频在线| 欧美超级免费视 在线| 免费不卡中文字幕视频| 亚洲国产日韩一区二区| 欧美国产亚洲精品久久久8v| 欧美激情一区二区三区蜜桃视频| 亚洲资源在线观看| 久久国产精品72免费观看| 亚洲卡通欧美制服中文| 久久五月激情| 久久理论片午夜琪琪电影网| 欧美精品色网| 欧美国产日本韩| 国产精品狠色婷| 亚洲国产高清aⅴ视频| 国产精品久久9| 欧美风情在线观看| 亚洲精品黄网在线观看| 久久久久一区| 久久久久天天天天| 激情久久五月| 亚洲日本精品国产第一区| 国产精品久久久久久久久| 欧美一区二区私人影院日本| 久久综合九色综合欧美狠狠| 嫩草成人www欧美| 黄色精品免费| 国产有码在线一区二区视频| 亚洲一区二区三区四区五区午夜| 国产精品美女www爽爽爽视频| 亚洲国产欧美一区二区三区久久| 国产一区二区三区丝袜| 欧美一区国产在线| 久久国产视频网| 91久久极品少妇xxxxⅹ软件| 欧美三级日韩三级国产三级| 亚洲一级特黄| 久久久中精品2020中文| 亚洲香蕉网站| 媚黑女一区二区| 国产精品99久久久久久久vr | 亚洲一区二区精品在线| 另类酷文…触手系列精品集v1小说| 91久久久亚洲精品| 久久久久一区二区| 亚洲一区二区三区四区中文| 精品成人在线观看| 国产精品一区毛片| 浪潮色综合久久天堂| 日韩一二三在线视频播| 欧美成年人在线观看| 亚洲女人小视频在线观看| 亚洲精品一区二区三区av| 国产视频一区在线观看一区免费| 欧美调教vk| 欧美精品自拍| 午夜在线观看欧美| 一本综合久久| 亚洲清纯自拍| 亚洲国产精品一区制服丝袜| 久久人人精品| 欧美福利影院| 你懂的成人av| 亚洲天堂黄色| 亚洲视频在线一区观看| 亚洲日本理论电影| 在线亚洲自拍| 亚洲欧美99| 久久米奇亚洲| 欧美三级视频在线| 亚洲成在线观看| 99精品热6080yy久久| 亚洲裸体在线观看| 午夜在线视频一区二区区别| 欧美在线免费视屏| 欧美11—12娇小xxxx| 国产主播一区二区| 韩国自拍一区| 一本久道久久综合狠狠爱| 久久久久久黄| 欧美阿v一级看视频| 亚洲一区二区3| 欧美区亚洲区| 亚洲乱码视频| 亚洲精品美女在线| 欧美在线观看视频| 欧美午夜久久| 99精品福利视频| 亚洲精品欧美日韩专区| 一区二区欧美视频| 毛片一区二区三区| 一区二区三区自拍| 久久不射中文字幕| 亚洲精品裸体| 久久一区二区三区av| 亚洲黄色一区| 亚洲精品视频在线播放| 欧美aa国产视频| 亚洲黄色在线观看| 亚洲精品在线免费| 欧美午夜在线| 久久精品视频在线| 午夜精品美女久久久久av福利| 欧美日韩国产精品一区| 亚洲欧美在线一区二区| 99在线|亚洲一区二区| 欧美另类在线播放| 亚洲视频自拍偷拍| 先锋资源久久| 国产一区二区三区奇米久涩| 欧美成人69av| 欧美大片第1页| 久久久综合网| 欧美另类高清视频在线| 午夜国产欧美理论在线播放 | 久久精品日韩| 欧美大片免费观看| 久久久久国产精品人| 欧美—级在线免费片| 99av国产精品欲麻豆| 亚洲伦理久久| 久久九九免费视频| 亚洲欧美亚洲| 国产伦一区二区三区色一情| 免费不卡视频| 国产精品www网站| 亚洲高清免费| 中文国产成人精品| 国产精品久久久久久妇女6080| 美女图片一区二区| 国产精品视频男人的天堂| 亚洲自拍三区| 亚洲精品小视频在线观看| 午夜久久福利| 午夜亚洲性色视频| 美日韩在线观看| 麻豆成人综合网| 国产精品影院在线观看| 欧美一区二区三区四区高清| 一本色道久久综合亚洲精品高清| 欧美日韩一区在线播放| 亚洲与欧洲av电影| 牛牛影视久久网| 精品99一区二区| 欧美激情一区二区三区全黄 | 蜜乳av另类精品一区二区| 久久九九电影| 亚洲娇小video精品| 欧美va天堂| 亚洲黄色影片| 久久福利视频导航| 亚洲二区视频| 亚洲高清av| 精品成人国产| 欧美日韩一区免费| 欧美激情一区二区三区在线视频观看 | 欧美影院在线播放| 美女脱光内衣内裤视频久久影院 | 亚洲东热激情| 国产精品久久久久毛片大屁完整版 | 国产精品毛片大码女人| 午夜精品久久久久久久男人的天堂 | 亚洲黄色在线视频| 亚洲精品永久免费| 亚洲国产精品久久久| 国产一区二区三区免费不卡 | 亚洲高清成人| 国产精品久久久久久av福利软件 | 欧美国产成人在线| 亚洲午夜女主播在线直播| 尤物yw午夜国产精品视频| 国产精品久久久久9999| 国产午夜精品视频| 韩国成人理伦片免费播放|