我注意到现代 C 和 C++ 代码似乎在几乎所有地方都使用size_t而不是int/ ——从 C 字符串函数的参数到 STL。unsigned int我很好奇这样做的原因及其带来的好处。
size_t
int
unsigned int
该size_t类型是无符号整数类型,它是sizeof运算符(和offsetof运算符)的结果,因此保证它足够大以包含系统可以处理的最大对象的大小(例如,8Gb 的静态数组)。
sizeof
offsetof
size_t类型可能大于、等于或小于,并且您的unsigned int编译器可能会对其进行优化以进行假设。
您可以在 C99 标准第 7.17 节中找到更精确的信息,该标准的草案在 Internet 上以pdf格式提供,或者在 C11 标准第 7.19 节中,也以pdf 草案的形式提供。