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

            統計

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            2021国内精品久久久久久影院| 久久九九亚洲精品| 久久人妻少妇嫩草AV无码蜜桃| 欧美亚洲日本久久精品| 久久精品aⅴ无码中文字字幕不卡 久久精品成人欧美大片 | 国产一区二区精品久久| 久久国产精品二国产精品| 97久久婷婷五月综合色d啪蜜芽| a级成人毛片久久| 亚洲国产精品无码久久久久久曰| 欧美一区二区三区久久综合| 久久久久无码中| 伊人久久大香线焦综合四虎| 亚洲乱码中文字幕久久孕妇黑人| 国产免费久久久久久无码| 久久综合给合久久狠狠狠97色| 一本久道久久综合狠狠躁AV| 国产福利电影一区二区三区久久久久成人精品综合 | 久久久久久久久波多野高潮| 久久亚洲国产午夜精品理论片| 久久久久久伊人高潮影院| 久久久久久国产精品免费免费| 99久久人妻无码精品系列| 久久综合给久久狠狠97色| 久久亚洲熟女cc98cm| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 久久66热人妻偷产精品9| 亚洲国产另类久久久精品| 国内精品久久久久影院亚洲| 久久男人中文字幕资源站| 久久久久久国产精品无码下载| 狠狠色噜噜狠狠狠狠狠色综合久久| 国产产无码乱码精品久久鸭| 97久久精品人妻人人搡人人玩| 无码人妻久久一区二区三区免费 | 久久婷婷国产综合精品| 精品国产乱码久久久久久人妻| 尹人香蕉久久99天天拍| 久久综合亚洲色一区二区三区| 久久综合视频网| 色欲综合久久躁天天躁蜜桃|