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