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


            九九久久精品国产| 久久久久亚洲AV无码专区首JN | 色8久久人人97超碰香蕉987| 少妇久久久久久被弄到高潮| 久久九九免费高清视频| 久久久国产精华液| 久久久久国产精品嫩草影院| 国产成人综合久久精品尤物| 日本免费一区二区久久人人澡 | 久久久亚洲裙底偷窥综合| 亚洲午夜久久久| 中文字幕久久亚洲一区| 热99RE久久精品这里都是精品免费| 久久有码中文字幕| 一本久道久久综合狠狠躁AV| 久久无码国产专区精品| 色综合久久中文字幕无码| 久久国产精品99精品国产987| 婷婷综合久久中文字幕| 久久久WWW成人| 国产亚洲精久久久久久无码77777 国产亚洲精品久久久久秋霞 | 伊人久久五月天| 色88久久久久高潮综合影院 | 99久久国产主播综合精品| 久久久久亚洲精品天堂久久久久久| 精品久久久久久无码中文字幕 | 狠狠色丁香久久婷婷综合图片 | 91精品国产91久久久久久青草| 精品久久久久久无码人妻热| 久久久国产视频| 69久久精品无码一区二区| 精品久久久久久国产三级| 日韩精品久久无码中文字幕| 久久精品国产久精国产| 一本一道久久a久久精品综合| 99久久免费国产精精品| 亚洲精品无码久久毛片| 久久精品国产亚洲沈樵| 一本久久a久久精品亚洲| 国产精品无码久久综合网| 午夜欧美精品久久久久久久|