• <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 閱讀(346) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            導航

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統計

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久久久99精品免费观看| 一级做a爰片久久毛片看看| 久久人人爽人人爽人人爽| 伊人久久亚洲综合影院| 久久w5ww成w人免费| 久久久久国产一区二区三区| 久久精品日日躁夜夜躁欧美 | 99久久国产亚洲综合精品| 色欲av伊人久久大香线蕉影院| 青青草原1769久久免费播放| 久久99热这里只频精品6| 99久久精品毛片免费播放| 国产精品成人久久久| 国产精品久久久久久一区二区三区| 开心久久婷婷综合中文字幕| 久久久精品人妻一区二区三区蜜桃 | 97久久精品人人澡人人爽| 久久久久久午夜精品| 精品视频久久久久| 97精品国产91久久久久久| 久久久久亚洲av成人网人人软件| 国产毛片久久久久久国产毛片| 久久精品国产亚洲av麻豆色欲| 欧美国产精品久久高清| 国产成人无码精品久久久免费 | 欧美成a人片免费看久久| 久久国产成人精品麻豆| 久久亚洲精精品中文字幕| 久久精品国产2020| 伊人情人综合成人久久网小说| 丰满少妇人妻久久久久久4| 久久国产乱子伦精品免费强| 成人综合伊人五月婷久久| 久久夜色精品国产噜噜噜亚洲AV| 久久久久综合国产欧美一区二区| 伊人色综合久久| 91精品久久久久久无码| 国产毛片久久久久久国产毛片 | 久久精品国产亚洲av麻豆蜜芽| 久久人人爽人人爽AV片| 久久强奷乱码老熟女网站|