size_t是什么数据类型?为什么要用size_t替代int、unsigned int、unsigned long、unsigned long long
今天看RXW源碼的時候,發(fā)現(xiàn)有個代碼把for循環(huán)的節(jié)點(diǎn)定義為size_t類型,我想這個循環(huán)才幾次啊,你就用size_t,逼裝的不錯哦!,,那么size_t究竟是嘎哈用的呢?讓我們來看看!
別看了,破案了,其實(shí)這里就應(yīng)該用size_t,因?yàn)閟trlen()函數(shù)返回的就是size_t。。。。它返回啥,我們就用啥類型,不用數(shù)據(jù)轉(zhuǎn)換,這是最理想的。。。
文章目錄
學(xué)過計(jì)算機(jī)組成原理應(yīng)該不會對此有疑問。int小于等于數(shù)據(jù)線寬度,size_t大于等于地址線寬度。size_t存在的最大原因可能是因?yàn)?#xff1a;地址線寬度歷史中經(jīng)常都是大于數(shù)據(jù)線寬度的。
在數(shù)據(jù)只有8位的年代,地址率先進(jìn)入10位,12位,在數(shù)據(jù)16位的年代,地址也已經(jīng)進(jìn)入了20位,24位。目前的int普遍是32位,而size_t在主流平臺中都是64位。
size_t為什么存在?因?yàn)闊o論int還是unsigned都很可能小于size_t需要的大小,所以必須有個size_t。
–補(bǔ)充:據(jù)說題主對_t有疑惑。這個問題很簡單,僅僅是因?yàn)樽髡哌x擇這樣的命名作為編碼規(guī)范而已。類型名與變量名共享相同的命名空間,所以通常需要在命名方面刻意區(qū)分出來。
在遙遠(yuǎn)的 C 時代,發(fā)明者很可能是想建議所有的類型名后面加_t,只不過這并沒有成為更普遍的編碼規(guī)范罷了。
而現(xiàn)今Java的規(guī)范倒比較容易讓人接受:大寫開頭的是類型名,小寫開頭的是變量名跟函數(shù)名,雖然具體細(xì)則有不同,但原意都是一樣的:變量與類型共享同一個命名空間,因而需要在命名規(guī)則上刻意區(qū)分開來。
參考文章1:size_t 這個類型的意義是什么? - pansz的回答 - 知乎
size_t類型是一個類型定義,通常將一些無符號的整形定義為size_t,比如說unsigned int或者unsigned long,甚至unsigned long long。每一個標(biāo)準(zhǔn)C實(shí)現(xiàn)應(yīng)該選擇足夠大的無符號整形來代表該平臺上最大可能出現(xiàn)的對象大小。
參考文章2:C語言中size_t類型詳細(xì)說明【轉(zhuǎn)載】
總結(jié)
以上是生活随笔為你收集整理的size_t是什么数据类型?为什么要用size_t替代int、unsigned int、unsigned long、unsigned long long的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言linux gettimeofda
- 下一篇: fwrite视频写入帧率测试(不用测了。