• <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>
            隨筆-4  評(píng)論-40  文章-117  trackbacks-0

            首先四種類型都是無符號(hào)類型,是用以表示元素個(gè)數(shù)或者數(shù)組索引的最佳類型。在作為函數(shù)參數(shù)時(shí),不需像有符號(hào)類型那樣檢測(cè)值是否小于零。

            1. ::size_t還是std::size_t
            請(qǐng)使用std::size_t,因?yàn)槟闾幱贑++的世界。
            在此,所有C++標(biāo)準(zhǔn)庫組件用以表示元素個(gè)數(shù)的類型(比如size()或者operator[])都是std::size_t。

            std::size_t count = array.size(); // array是typedef vector<int>
            std::size_t index = 0;
            array[ index ] = 0;

            注意:
            1) 如果某個(gè)CPP沒有使用任何C++標(biāo)準(zhǔn)庫組件,那么就有可能需要包含<cstddef> 頭文件。
            2) std::size_t其實(shí)就是::size_t (::size_t被引入到namespace std中(你可以在<cstring>中找到)


            2.基本上我們不會(huì)考慮unsigned int和unsigned long,因?yàn)樘幵贑++的世界,使用C++標(biāo)準(zhǔn)庫組件就是在所難免了。
            如果你非要了解其細(xì)枝末節(jié)的話,那么下面是一份清單:

            unsigned int 和 unsigned long比較(不考慮32位以下的平臺(tái))

            如果不考慮可移植性:
            在32位平臺(tái)上更應(yīng)該使用unsigned int,因?yàn)樗?br>1)和unsigned long 一樣的大小,32位可以表示到42.9億。
            2) 比unsigned long更常用
            3) 和std::size_t是一樣的類型

            如果是64位平臺(tái)的話:
            1) unsinged int仍是32位,而unsigned long就是64位了。
            2) 更應(yīng)該使用unsigned long因?yàn)樘幚砥鲗?duì)64位具有更快的處理速度。

            就目前而言,64位平臺(tái)還不夠成熟,所以向64位平臺(tái)的移植基本不做考慮。

            但是如果你堅(jiān)持要考慮可移植性(注意是硬件32位平臺(tái)向64位移植,而非軟件):
            1) 如果對(duì)速度敏感:使用unsigned long,無論在32位還是64位都有最快的處理速度。
            2) 如果對(duì)內(nèi)存敏感:使用unsigned int,使用內(nèi)存量不會(huì)因平臺(tái)而改變。
            不過通常對(duì)于硬件平臺(tái)的可移植性的考慮都是多余的(不夠敏捷哦)。

            3. 關(guān)于unsigned類型:

            有時(shí)候會(huì)碰到一些C語言的函數(shù),它的參數(shù)類型是unsigned,而不是unsigned int、unsigned long之類的,例如:Turbo C的庫函數(shù)中有這么幾個(gè)函數(shù):unsigned far setgraphbufsize(unsigned bufsize);int read(int handle, void *buf, unsigned len); int write(int handle, void *buf, unsigned len);

            [摘引他人]這種情況一般都會(huì)在前面進(jìn)行宏定義的
            是為了版本兼容或跨平臺(tái)
            現(xiàn)在的32位變成64位的機(jī)器 這樣的定義有必要

            #ifdef WINDOWS
               define unsigned (unsigned int)
            #endif

            ifdef LINUX
                define unsigned (unsigned long)
            #endif
            這樣的話在跨平臺(tái)的時(shí)候就很有必要了

            CHECK:個(gè)人經(jīng)查閱VC6系統(tǒng)頭文件,并未發(fā)現(xiàn)上面的宏定義;同時(shí)結(jié)合一些函數(shù)(如_beginthreadex)查閱MSDN,判斷unsigned在32位系統(tǒng)下就代表unsigned int,畢竟這是系統(tǒng)最常用的類型。



            posted on 2010-04-27 17:29 李陽 閱讀(3305) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++
            欧美亚洲另类久久综合| 精品久久久久一区二区三区 | 久久99久久99小草精品免视看 | 久久精品国产99久久无毒不卡| 99久久精品久久久久久清纯| 99久久综合狠狠综合久久| 97久久久久人妻精品专区| 午夜不卡888久久| 久久无码人妻精品一区二区三区| 嫩草影院久久国产精品| 97久久精品人人做人人爽| 久久精品国产欧美日韩99热| 精品国产乱码久久久久久呢| 国产人久久人人人人爽| 精品综合久久久久久88小说 | 久久婷婷五月综合色奶水99啪| 亚洲AⅤ优女AV综合久久久| 国产亚洲美女精品久久久2020| 久久精品人人做人人爽电影蜜月| 久久综合亚洲鲁鲁五月天| 99久久精品国产一区二区蜜芽| 亚洲精品tv久久久久| 久久精品免费网站网| 免费国产99久久久香蕉| 狠狠色婷婷久久一区二区三区| 97超级碰碰碰久久久久| 久久亚洲日韩精品一区二区三区| 国产精品亚洲美女久久久| 久久久高清免费视频| 婷婷久久综合九色综合九七| 久久久久亚洲AV成人网| 国内精品久久久久久麻豆| 久久久WWW免费人成精品| 久久久久国产| 久久这里只有精品18| 国产一级做a爰片久久毛片| 91精品国产91久久综合| 一本一道久久精品综合| 久久人人爽人人爽人人片AV高清| 久久国产热这里只有精品| 国产精品久久久福利|