• <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)論排行榜

            久久午夜无码鲁丝片| 国产亚洲精久久久久久无码AV| 久久久精品国产亚洲成人满18免费网站| 日韩亚洲欧美久久久www综合网 | 久久久久高潮毛片免费全部播放| 久久丫精品国产亚洲av不卡| 18岁日韩内射颜射午夜久久成人| 三级韩国一区久久二区综合| 精品久久久久久国产潘金莲| 三级片免费观看久久| 久久精品免费观看| 久久久SS麻豆欧美国产日韩| 久久精品免费观看| 亚洲精品乱码久久久久久蜜桃不卡| 国产99久久久国产精免费| 免费精品久久天干天干| 国内精品久久久久久久亚洲| 久久精品国产亚洲av麻豆色欲| 四虎影视久久久免费| 久久久久久免费一区二区三区| 伊人久久大香线蕉av一区| 97精品伊人久久久大香线蕉| 久久久久久久亚洲Av无码| 18禁黄久久久AAA片| 久久久精品波多野结衣| 久久免费小视频| 国产亚洲精品自在久久| 久久午夜免费视频| 午夜视频久久久久一区| 久久久久久一区国产精品| 7国产欧美日韩综合天堂中文久久久久 | 99久久精品国产一区二区三区 | 亚洲人成无码www久久久| 精品久久久久久久中文字幕| 狠狠久久亚洲欧美专区| 一本色道久久综合狠狠躁| 精品综合久久久久久97| 亚洲国产成人精品女人久久久 | 久久九九亚洲精品| 91精品观看91久久久久久| 99久久综合国产精品二区|