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

            chenglong7997

            整數(shù)溢出

             整數(shù)溢出
            c語言中存在兩類整數(shù)算術(shù)運算,有符號運算和無符號運算。在無符號運算里,沒有了符號位,所以是沒有溢出的概念的

            所有的無符號運算都是以2的n次方為模。如果算術(shù)運算符的一個操作數(shù)是有符號書,另一個是無符號數(shù),那么有符號數(shù)

            會被轉(zhuǎn)換為無符號數(shù)(表示范圍小的總是被轉(zhuǎn)換為表示范圍大的),那么溢出也不會發(fā)生。但是,當(dāng)兩個操作數(shù)都是有符號數(shù)

            時,溢出就有可能發(fā)生。而且溢出的結(jié)果是未定義的。當(dāng)一個運算的結(jié)果發(fā)生溢出時,任何假設(shè)都是不安全的。

            例如,假定a和b是兩個非負(fù)的整型變量(有符號),我們需要檢查a+b是否溢出,一種想當(dāng)然的方式是:

            if (a + b < 0)

                  溢出;

            實際上,在現(xiàn)實世界里,這并不能正常運行。當(dāng)a+b確實發(fā)生溢出時,所有關(guān)于結(jié)果如何的假設(shè)均不可靠。比如,在某些

            機(jī)器的cpu,加法運算將設(shè)置一個內(nèi)部寄存器為四種狀態(tài):正,負(fù),零和溢出。在這種機(jī)器上,c編譯器完全有理由實現(xiàn)以上

            的例子,使得a+b返回的不是負(fù),而是這個內(nèi)存寄存器的溢出狀態(tài)。顯然,if的判斷會失敗。

            一種正確的方式是將a和b都強(qiáng)制轉(zhuǎn)換為無符號整數(shù):

            if ( (unsigned)a + (unsigned)b  > INT_MAX)

                  溢出;

            這里的int_max值為有符號整型的最大值。在一般的編譯器里是一個預(yù)定義的常量。ANSI C在limits里定義了INT_MAX,值為

            2的31次方-1.

            不需要用到無符號算數(shù)運算的另一種可行方法是:

            if (a > INT_MAX - b )

                 溢出; 

            posted on 2012-06-25 01:15 Snape 閱讀(990) 評論(0)  編輯 收藏 引用 所屬分類: Traps

            導(dǎo)航

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

            統(tǒng)計

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            my

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品国产福利国产琪琪| 久久久久久久女国产乱让韩| 办公室久久精品| 精品久久久久久久中文字幕| 日批日出水久久亚洲精品tv| 亚洲va中文字幕无码久久不卡| 狠狠色丁香久久婷婷综合五月| 国产福利电影一区二区三区久久久久成人精品综合 | 97香蕉久久夜色精品国产| 精品综合久久久久久98| 久久免费国产精品一区二区| 日韩一区二区三区视频久久| 国产∨亚洲V天堂无码久久久| 久久综合五月丁香久久激情| 久久精品亚洲中文字幕无码麻豆| 久久精品中文字幕一区| 久久精品国产亚洲AV电影| 亚洲а∨天堂久久精品| 99久久99久久精品国产片| 久久99久国产麻精品66| 一本色道久久88综合日韩精品 | 欧美激情一区二区久久久| 国产精品欧美久久久天天影视| 久久精品国产免费观看| 久久久精品国产亚洲成人满18免费网站| 国内精品九九久久精品 | 精品久久久久久无码免费| 久久狠狠色狠狠色综合| 国产精品久久久久久久| 久久w5ww成w人免费| 蜜臀av性久久久久蜜臀aⅴ| 久久人人添人人爽添人人片牛牛| 国产亚洲精午夜久久久久久| 久久精品国产亚洲AV麻豆网站| 色88久久久久高潮综合影院| 久久久久se色偷偷亚洲精品av| 亚洲国产高清精品线久久 | 久久精品国产亚洲精品| 久久久久亚洲AV综合波多野结衣| 办公室久久精品| 久久精品国产亚洲Aⅴ蜜臀色欲|