• <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>

            no_rain

            C中的side effect 和 sequence point

            wiki 中 sequence point 定義:
            sequence point in imperative programming defines any point in a computer program's execution at which it is guaranteed that allside effects of previous evaluations will have been performed, and no side effects from subsequent evaluations have yet been performed. They are often mentioned in reference to C and C++, because the result of some expressions can depend on the order of evaluation of their subexpressions. Adding one or more sequence points is one method of ensuring a consistent result, because this restricts the possible orders of evaluation.
            簡單的說就是在C/C++中有一些執行順序問題,C/C++定義了一些sequence point,在下一個sequence point 執行之前必須把前一個執行完,但是問題是在一個sequence point 和另一個之間還有一些side effect。由于這些就引出一些有趣的問題。
            條件運算符?:、逗號運算符、邏輯與&&、邏輯或||的每一個操作數求值之后是Sequence Point。
            問題一:
            f(g( ), h( ) );
            先執行誰?答:g( ),h( ) 的順序不確定,它們執行之后才執行f ( );
            問題二:
            int i = 1;i = i ++;
            結果是? 答:undefined,因為我們知道i++ 是先返回再改變i的值的,那么賦值語句右邊就有了值了,那么就存在這樣的兩種情況:1,i先賦值,再++,那么i現在為2;2,先++,然后賦值,注意此時賦值的內容是還沒++的值,所以i為1;根據不同的編譯器會得出不同的結果的。
            問題三:
            int a  = 1; a = (++a)+(++a)+(++a);
            結果是?答:undefined,這個的問題是,到底是先把每個++執行完之后才進行加法還是先把前兩個先加再執行最后一個++?兩者的答案分別是9,11。當然還有其他情況。
            問題四:
            int i = 1int a[10]={0}; a[i++= i;
            答:同問題2.
            所以我們要堅持的原則是:
            在兩個Sequence Point之間,同一個變量的值只允許被改變一次





            posted on 2011-11-14 15:08 is-programmer 閱讀(352) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            導航

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            統計

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            97久久精品无码一区二区天美 | 久久亚洲AV成人无码电影| 久久精品国产久精国产果冻传媒| 久久福利资源国产精品999| 亚洲欧美日韩久久精品第一区| 国产亚洲综合久久系列| 国产成人久久精品二区三区| 香蕉99久久国产综合精品宅男自| 久久夜色精品国产噜噜噜亚洲AV| 一本色道久久88加勒比—综合| 亚洲精品国精品久久99热| 精品久久久久久亚洲| 色综合久久夜色精品国产| 久久久久久a亚洲欧洲aⅴ| 97香蕉久久夜色精品国产| 国产伊人久久| 狠狠色丁香婷婷综合久久来| 久久精品成人欧美大片| 欧美成a人片免费看久久| 欧美日韩中文字幕久久伊人| 久久人人爽人人爽人人爽| 久久久国产精品| 99久久国产主播综合精品| 国内精品久久久久久99蜜桃| 久久精品一本到99热免费| 久久综合久久伊人| 久久亚洲国产成人影院网站| 99久久国产热无码精品免费久久久久| 777午夜精品久久av蜜臀| 亚洲婷婷国产精品电影人久久| 国产成人精品久久一区二区三区av | 国产精品久久久久影院嫩草| 亚洲va久久久噜噜噜久久狠狠| 三级片免费观看久久| 久久久久无码精品国产app| 国产综合精品久久亚洲| 国产伊人久久| 午夜精品久久久久久影视777 | 久久人爽人人爽人人片AV | 欧美大战日韩91综合一区婷婷久久青草 | 国产精品久久影院|