size_t是什么数据类型?为什么要用size_t替代intunsigned intunsigned longunsigned long long
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了size_t是什么数据类型?为什么要用size_t替代intunsigned intunsigned longunsigned 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实现应该选择足够大的无符号整形来代表该平台上最大可能出现的对象大小。
以上是关于size_t是什么数据类型?为什么要用size_t替代intunsigned intunsigned longunsigned long long的主要内容,如果未能解决你的问题,请参考以下文章