当我读取一些代码时,对于整数,它们使用一堆不同类型的size_t, uint32, uint64等等.这样做的动机或目的是什么?为什么不用int?与平台交叉相关?或低级相关.
有时,代码对我有意义,因为他们只需要32位int或其他东西.但是,是什么size_t?请帮我说清楚.
Nem*_*emo 15
这些是为了平台独立性.
size_t根据定义,是返回的类型sizeof.它足以表示目标系统上的最大对象.
不是很多年前,32位对于任何平台来说已经足够了.今天64位就足够了.但谁知道从现在起5年,10年或50年需要多少位?
通过编写代码而不关心 - 即,size_t当你的意思是"对象的大小"时总是使用- 你可以编写实际编译并运行5年,10年或50年后的代码.或者至少有一个战斗机会.
使用类型来表达你的意思.如果由于某种原因需要特定数量的位(可能仅在处理外部定义的格式时),请使用特定于大小的类型.如果你想要的东西是"机器的自然字大小" - 即快速使用int.
如果您正在处理类似的程序sizeof或strlen,请使用适合该接口的数据类型,例如size_t.
并且永远不要尝试将一种类型分配给另一种类型,除非它足够大以按定义保存值.