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

            大龍的博客

            常用鏈接

            統(tǒng)計

            最新評論

            語言編程需要注意的64位和32機(jī)器的區(qū)別

            一、數(shù)據(jù)類型特別是int相關(guān)的類型在不同位數(shù)機(jī)器的平臺下長度不同。C99標(biāo)準(zhǔn)并不規(guī)定具體數(shù)據(jù)類型的長度大小,只規(guī)定級別。作下比較:

            16位平臺

            char         1個字節(jié)8位

            short        2個字節(jié)16位

            int            2個字節(jié)16位

            long         4個字節(jié)32位

            指針         2個字節(jié)

            32位平臺

            char         1個字節(jié)8位

            short        2個字節(jié)16位

            int            4個字節(jié)32位

            long         4個字節(jié)

            long long 8個字節(jié)

            指針         4個字節(jié)

            64位平臺

            char         1個字節(jié)

            short        2個字節(jié)

            int            4個字節(jié)

            long         8個字節(jié)(區(qū)別)

            long long 8個字節(jié)

            指針        8個字節(jié)(區(qū)別)

            二、編程注意事項

            為了保證平臺的通用性,程序中盡量不要使用long數(shù)據(jù)庫型。可以使用固定大小的數(shù)據(jù)類型宏定義:

            typedef signed char       int8_t

            typedef short int             int16_t;

            typedef int                      int32_t;

            # if __WORDSIZE == 64
            typedef long int              int64_t;
            # else
            __extension__
            typedef long long int      int64_t;

            #endif

            三、使用int時也可以使用intptr_t來保證平臺的通用性,它在不同的平臺上編譯時長度不同,但都是標(biāo)準(zhǔn)的平臺長度,比如64位機(jī)器它的長度就是8字節(jié),32位機(jī)器它的長度是4字節(jié),定義如下:

            #if __WORDSIZE == 64
            typedef long int                intptr_t;
            #else
            typedef int                        intptr_t;
            #endif
            編程中要盡量使用sizeof來計算數(shù)據(jù)類型的大小

            以上類型定義都有相應(yīng)的無符號類型。

            另外還有ssize_t和size_t分別是sign size_t和unsigned signed size of computer word size。它們也是表示計算機(jī)的字長,在32位機(jī)器上是int型,在64位機(jī)器上long型,從某種意義上來說它們等同于intptr_t和uintptr_t。它們在stddef.h里面定義。需要注意的是socket的accept函數(shù)在有些操作系統(tǒng)上使用size_t是不正確的,因為accept接收的int*類型,而size_t可能是long int 類型。后來BSD使用sock_t來替代它。

            posted on 2010-05-27 23:35 大龍 閱讀(2316) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            精品人妻伦九区久久AAA片69| 性做久久久久久久久浪潮| 久久精品水蜜桃av综合天堂| 久久妇女高潮几次MBA| www久久久天天com| 久久99精品久久久久久不卡| 三级三级久久三级久久| 色8久久人人97超碰香蕉987| 99久久99久久精品国产片果冻| 污污内射久久一区二区欧美日韩| 少妇人妻综合久久中文字幕| 青青国产成人久久91网| 久久久亚洲裙底偷窥综合| 青青热久久综合网伊人| 99精品久久精品一区二区| 久久综合九色欧美综合狠狠 | 狠狠88综合久久久久综合网| 久久99国产精品成人欧美| 久久久久亚洲AV无码麻豆| 久久久久久久久波多野高潮| 国产精品成人久久久久久久| 午夜天堂av天堂久久久| 国产精品久久久久蜜芽| 热综合一本伊人久久精品| 久久久久久狠狠丁香| 日韩AV无码久久一区二区| 狠狠色丁香久久婷婷综合_中| 久久精品成人一区二区三区| 久久99国产精品久久99| 久久精品国产亚洲AV无码麻豆 | 青青青国产精品国产精品久久久久| 精品国产乱码久久久久久呢 | 99久久精品免费看国产免费| 99久久99久久精品免费看蜜桃| 亚洲中文字幕久久精品无码喷水 | 久久无码人妻一区二区三区| 国产精品成人久久久| 97香蕉久久夜色精品国产| 欧美黑人激情性久久| 久久久久av无码免费网| 亚洲成色www久久网站夜月|