• <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.
            簡(jiǎn)單的說(shuō)就是在C/C++中有一些執(zhí)行順序問(wèn)題,C/C++定義了一些sequence point,在下一個(gè)sequence point 執(zhí)行之前必須把前一個(gè)執(zhí)行完,但是問(wèn)題是在一個(gè)sequence point 和另一個(gè)之間還有一些side effect。由于這些就引出一些有趣的問(wèn)題。
            條件運(yùn)算符?:、逗號(hào)運(yùn)算符、邏輯與&&、邏輯或||的每一個(gè)操作數(shù)求值之后是Sequence Point。
            問(wèn)題一:
            f(g( ), h( ) );
            先執(zhí)行誰(shuí)?答:g( ),h( ) 的順序不確定,它們執(zhí)行之后才執(zhí)行f ( );
            問(wèn)題二:
            int i = 1;i = i ++;
            結(jié)果是? 答:undefined,因?yàn)槲覀冎纈++ 是先返回再改變i的值的,那么賦值語(yǔ)句右邊就有了值了,那么就存在這樣的兩種情況:1,i先賦值,再++,那么i現(xiàn)在為2;2,先++,然后賦值,注意此時(shí)賦值的內(nèi)容是還沒(méi)++的值,所以i為1;根據(jù)不同的編譯器會(huì)得出不同的結(jié)果的。
            問(wèn)題三:
            int a  = 1; a = (++a)+(++a)+(++a);
            結(jié)果是?答:undefined,這個(gè)的問(wèn)題是,到底是先把每個(gè)++執(zhí)行完之后才進(jìn)行加法還是先把前兩個(gè)先加再執(zhí)行最后一個(gè)++??jī)烧叩拇鸢阜謩e是9,11。當(dāng)然還有其他情況。
            問(wèn)題四:
            int i = 1int a[10]={0}; a[i++= i;
            答:同問(wèn)題2.
            所以我們要堅(jiān)持的原則是:
            在兩個(gè)Sequence Point之間,同一個(gè)變量的值只允許被改變一次





            posted on 2011-11-14 15:08 is-programmer 閱讀(346) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C/C++

            導(dǎo)航

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

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆檔案

            文章分類(lèi)

            文章檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            午夜欧美精品久久久久久久| 午夜精品久久久久久久| 国内精品久久久久影院免费| 7国产欧美日韩综合天堂中文久久久久 | 香蕉久久夜色精品升级完成| 国产精品内射久久久久欢欢| 精品久久久久久国产三级 | 久久综合偷偷噜噜噜色| 99精品久久久久久久婷婷| 91精品国产综合久久婷婷| 久久精品亚洲欧美日韩久久| 久久久无码精品亚洲日韩京东传媒| 久久综合狠狠综合久久| 久久中文字幕视频、最近更新| 久久久久久久97| 久久综合视频网站| 久久天堂电影网| 亚洲国产精品无码久久98| 久久久久国产| 青青草国产精品久久| 新狼窝色AV性久久久久久| 性做久久久久久久久老女人| 69SEX久久精品国产麻豆| 亚洲伊人久久大香线蕉综合图片| 99久久精品九九亚洲精品| 国产亚洲精品自在久久| 久久国产色av免费看| 亚洲精品国产综合久久一线| 国产精品免费久久| 久久精品国产精品青草| 久久综合狠狠综合久久| 无码人妻久久一区二区三区免费丨| 久久久久亚洲AV无码去区首| 国产99久久久国产精免费| 久久中文娱乐网| 伊人色综合久久| 亚洲天堂久久精品| 国产精品VIDEOSSEX久久发布| 久久久综合九色合综国产| 久久中文娱乐网| 久久精品成人免费国产片小草|