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

            導(dǎo)航

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            热久久这里只有精品| 久久久WWW成人免费毛片| 思思久久好好热精品国产| 国产一区二区久久久| 久久精品国产亚洲AV忘忧草18 | 久久亚洲中文字幕精品有坂深雪 | 国产精品99精品久久免费| 亚洲国产精品成人久久蜜臀| 精品多毛少妇人妻AV免费久久| 亚洲国产精品成人AV无码久久综合影院 | 精品永久久福利一区二区| 欧洲成人午夜精品无码区久久 | 亚洲日韩欧美一区久久久久我| 99久久国产亚洲综合精品| 亚洲国产精品无码久久久蜜芽 | 久久国产精品-国产精品| 久久久国产精品网站| 亚洲国产日韩欧美综合久久| 99精品久久久久中文字幕| 热久久最新网站获取| 香蕉久久夜色精品国产小说| 色欲综合久久中文字幕网| 久久精品国产福利国产琪琪| 久久99精品国产麻豆宅宅| 97精品依人久久久大香线蕉97| 开心久久婷婷综合中文字幕| 久久久无码精品亚洲日韩蜜臀浪潮| 品成人欧美大片久久国产欧美...| 久久人人添人人爽添人人片牛牛| 四虎国产永久免费久久| 久久综合香蕉国产蜜臀AV| 久久久国产99久久国产一| 欧美亚洲日本久久精品| 国产激情久久久久影院小草| 狠狠色婷婷综合天天久久丁香 | 中文精品久久久久人妻不卡| 色综合久久中文综合网| 久久99国产亚洲高清观看首页| 国内精品伊人久久久久| 99国产欧美精品久久久蜜芽| 国内精品九九久久久精品|