• <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>
            孤星
            孤星
                   我現(xiàn)在還是一名在校的大學(xué)生,不過2006 年我會(huì)走出校園,成為社會(huì)上的一員,我現(xiàn)在深感到我的計(jì)算機(jī)專業(yè)知識(shí)的不足。所以想通過網(wǎng)上學(xué)習(xí),來提高自身,我也希望有更多的朋友,來一起學(xué)習(xí)C++等系列課程,需心請(qǐng)教!
                   上一次,有人遇到這樣一個(gè)問題,也許現(xiàn)在已經(jīng)解決了,但我還是要將這個(gè)問題,分析一下,!
            問題是這樣的:

            #include "iostream.h"
             int main( )
            {   int i = 3 ;
                int sum = (i++) + (i++) + (i++);
                cout << sum;

                }
              在VC 6、0  結(jié)果是 16,我認(rèn)為是這樣的, 在VC里 先將 前兩個(gè)i ++  相加,兩次 i++ 為5+5=10 ,再和第三個(gè) i 相加,結(jié)果就是十六了,不知有何高見!
            posted on 2005-12-25 19:44 孤星 閱讀(612) 評(píng)論(15)  編輯 收藏 引用
            Comments
            • # re: 初來乍到
              梁宇翔
              Posted @ 2005-12-25 20:27
              這樣寫代碼會(huì)被罵的,int sum = (i++) + (i++) + (i++);
              sum的結(jié)果有可能是隨機(jī)的。
              如果不是無聊到了極點(diǎn)的話,
              還是不要這樣寫吧。
              這是我的建議:
              int x = i++;
              int sum = x*3;  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              zhy
              Posted @ 2005-12-25 21:52
              不知道你怎么得到的16
              不過事實(shí)上是9
              你在cout《i時(shí)i為6;
              同意樓上的說法。  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              Ying-Shen
              Posted @ 2005-12-25 22:09
              int sum = (i++) + (i++) + (i++);

              這個(gè)中國(guó)大學(xué)計(jì)算機(jī)系老師自認(rèn)為是C語(yǔ)言中重要的知識(shí)點(diǎn)的地方,
              在C++的標(biāo)準(zhǔn)里面就一句the result is compiler specific就結(jié)束了。

              就是這個(gè)小地方浪費(fèi)了每個(gè)中國(guó)大學(xué)計(jì)算機(jī)系學(xué)生的時(shí)間,并且對(duì)計(jì)算機(jī)編程
              認(rèn)識(shí)造成重大誤導(dǎo)。并且這個(gè)錯(cuò)誤還在一屆屆的延續(xù)下去。。。。。中國(guó)計(jì)算機(jī)教育界的悲哀。。。

                回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              huangyi
              Posted @ 2005-12-25 23:26
              如果你的目的是研究vc編譯器的話...
              如果你上面16的說法正確的話(沒試過) 那vc的這種方法似乎有點(diǎn)不人道啊 呵呵  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              hehehe
              Posted @ 2005-12-25 23:44
              the result is compiler specific這句話我喜歡。。。  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              發(fā)
              Posted @ 2005-12-26 10:28
              這個(gè)中國(guó)大學(xué)計(jì)算機(jī)系老師自認(rèn)為是C語(yǔ)言中重要的知識(shí)點(diǎn)的地方,
              在C++的標(biāo)準(zhǔn)里面就一句the result is compiler specific就結(jié)束了。

              就是這個(gè)小地方浪費(fèi)了每個(gè)中國(guó)大學(xué)計(jì)算機(jī)系學(xué)生的時(shí)間,并且對(duì)計(jì)算機(jī)編程
              認(rèn)識(shí)造成重大誤導(dǎo)。并且這個(gè)錯(cuò)誤還在一屆屆的延續(xù)下去。。。。。中國(guó)計(jì)算機(jī)教育界的悲哀。。。

              嚴(yán)重同意這個(gè)!  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              50米
              Posted @ 2005-12-26 15:04
              呵呵順序點(diǎn)的情況估計(jì)不少人都沒有聽過吧,^_^托大了呵呵:)

              下面舉例說明吧呵呵。
              int m=1;
              int n;
              n=m++ + m++;
              請(qǐng)回答結(jié)果是多少?

              正確回答是:不知道!語(yǔ)言沒有規(guī)定它應(yīng)該算出什么,結(jié)果完全依賴具體系統(tǒng)在具體上下文中的具體處理。其中牽涉到運(yùn)算對(duì)象的求值順序和變量修改的實(shí)現(xiàn)時(shí)刻問題

              a = 4; cout << a++ << a;

              這種東西根本不該寫,討論其效果沒有意義。

              我們知道它是
              (cout.operator <<(a++)).operator << (a);
              的簡(jiǎn)寫。先看外層函數(shù)調(diào)用,這里需要算出所用函數(shù)(由加下劃線的一段得到),還需要計(jì)算a 的值。語(yǔ)言沒有規(guī)定哪個(gè)先算。如果真的先算函數(shù),這一計(jì)算中出現(xiàn)了另一次函數(shù)調(diào)用,在被調(diào)函數(shù)體執(zhí)行前有一個(gè)順序點(diǎn),那時(shí)a++ 的副作用就會(huì)實(shí)現(xiàn)。如果是先算參數(shù),求出a 的值4,而后計(jì)算函數(shù)時(shí)的副作用當(dāng)然不會(huì)改變它(這種情況下輸出兩個(gè)4 )。當(dāng)然,這些只是假設(shè),實(shí)際應(yīng)該說的是:這種東西根本不該寫,討論其效果沒有意義。


              程序語(yǔ)言通常都規(guī)定了執(zhí)行中變量修改的最晚實(shí)現(xiàn)時(shí)刻(稱為順序點(diǎn)、序點(diǎn)或執(zhí)行點(diǎn))。程序執(zhí)行中存在一系列順序點(diǎn)(時(shí)刻),語(yǔ)言保證一旦執(zhí)行到達(dá)一個(gè)順序點(diǎn),在此之前發(fā)生的所有修改(副作用)都必須實(shí)現(xiàn)(必須反應(yīng)到隨后對(duì)同一存儲(chǔ)位置的訪問中),在此之后的所有修改都還沒有發(fā)生。在順序點(diǎn)之間則沒有任何保證。對(duì)C/C++ 語(yǔ)言這類允許表達(dá)式有副作用的語(yǔ)言,順序點(diǎn)的概念特別重要。  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              味全每日C++
              Posted @ 2005-12-27 16:55
              不要太苛求語(yǔ)法..
              追求這樣的細(xì)節(jié)不利于自己的提高:)  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              LOGOS
              Posted @ 2005-12-27 17:11
              關(guān)于這個(gè)問題,我也差異了一下,不過編譯成匯編后,就明白了:這些事情,是編譯器決定的事情.
              ; Line 11
              mov DWORD PTR _i$[ebp], 3
              ; Line 12
              mov eax, DWORD PTR _i$[ebp]
              add eax, DWORD PTR _i$[ebp]
              add eax, DWORD PTR _i$[ebp]
              mov DWORD PTR _sum$[ebp], eax
              mov ecx, DWORD PTR _i$[ebp]
              add ecx, 1
              mov DWORD PTR _i$[ebp], ecx
              mov edx, DWORD PTR _i$[ebp]
              add edx, 1
              mov DWORD PTR _i$[ebp], edx
              mov eax, DWORD PTR _i$[ebp]
              add eax, 1
              mov DWORD PTR _i$[ebp], eax  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              發(fā)咯簌簌
              Posted @ 2005-12-27 19:23
              VC6.0中運(yùn)算結(jié)果是9。  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              rotcet
              Posted @ 2005-12-31 19:28
              c本身沒有對(duì)表達(dá)式的求值運(yùn)算方式做規(guī)定,所以這是編譯器相關(guān)的,這種問題在真實(shí)開發(fā)中屬于不良代碼,不可以這樣寫  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              勾來斌
              Posted @ 2006-02-05 11:14
              基本同意梁宇翔和Ying-Shen
              這樣寫程序有誰知道其語(yǔ)義到底是什么
                回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              yskin
              Posted @ 2006-02-22 11:48
              我前幾天也看到過,他說的是:
              int sum = (++i) + (++i) + (++i);

              有人說按照c++標(biāo)準(zhǔn)應(yīng)該是18.但是vc6編譯出來是16.還有人說vc7.1出來是18.

              樓主既然記得16,一定是你把程序給記錯(cuò)了。  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              unknown
              Posted @ 2006-04-19 17:39
              浪費(fèi)時(shí)間  回復(fù)  更多評(píng)論   
            • # re: 初來乍到
              JJJ
              Posted @ 2007-09-07 15:06
              浪費(fèi)時(shí)間  回復(fù)  更多評(píng)論   

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


             
            久久99久久无码毛片一区二区| 国产精品久久新婚兰兰| 亚洲综合久久久| 久久久99精品成人片中文字幕| 国产精品久久久久久久久免费| 亚洲精品乱码久久久久久蜜桃不卡 | 久久精品夜夜夜夜夜久久| 性做久久久久久久久浪潮| 久久91精品国产91久| 中文国产成人精品久久亚洲精品AⅤ无码精品| 伊人色综合久久天天| 精品国产一区二区三区久久蜜臀| 日本三级久久网| 九九久久精品无码专区| 亚洲精品无码久久毛片| 久久午夜夜伦鲁鲁片免费无码影视| 思思久久99热只有频精品66| 亚洲午夜久久久久妓女影院| 国产精品一区二区久久国产| 一本久久久久久久| 色狠狠久久综合网| 久久久久99精品成人片试看 | 亚洲AV成人无码久久精品老人| 7777精品久久久大香线蕉| 精品久久久久久久无码| 99久久人人爽亚洲精品美女 | 伊人情人综合成人久久网小说| 久久久久久精品免费免费自慰| 久久久久久亚洲Av无码精品专口| 久久综合综合久久97色| 国产精品久久久久久久app| 国产亚洲精久久久久久无码| 欧美激情精品久久久久久| 性欧美丰满熟妇XXXX性久久久| 国产精品视频久久| 久久夜色精品国产噜噜亚洲a| 7777久久亚洲中文字幕| 综合久久一区二区三区| 国产精品久久久福利| 久久国产AVJUST麻豆| 久久中文字幕一区二区|