我是一名电气工程师,他转向计算机科学家.我很难理解为什么在C++中有这么多东西几乎相同但不完全相同.一个例子是short
VS int
VS unsigned int
VS size_t
VS long int
VS long long int
VS uint8_t
(我不知道是否有指定的整数任何其他方式).它似乎使语言不必要地变得复杂.
可能或应该size_t
被替换或者是否有任何功能无法以其他方式使用?
[编辑]
在有用的答案之后,还有一些我还没有完全看到的东西.size_t
一些人建议,在便携性和性能方面很有用.但是有多大帮助,是否有一种定量方法或数字证据来衡量优势而不仅仅是让int
所有兄弟退休?
std::size_t
是一个unsigned
基本类型的typedef ,它应该能够表示程序中任何可能的索引/大小(从技术上讲,它也是sizeof
运算符的结果).其基本基本类型,可以在不同的实现方式不同,因为你想可移植性,使用std::size_t
和不在乎了它是否是一个unsigned long int
或unsigned long long int
等.
std::size_t
不使用任何不可能以其他方式使用的功能,它只是一个方便的类型别名,仅此而已.
响应OP编辑
@HoapHumanoid编辑对于StackOverflow来说不是一个很好的问题,因为它是个人解释/偏好的问题.当然,您只能使用一种数字类型或固定大小的类型,但是当您想要从处理器中挤出尽可能多的性能时,最好有很多,每种都能够代表特定的范围,具体取决于物理平台.由于计算机体系结构是千差万别的,每个架构将强制使用自己的大小,例如int
,long
当您与便携性结合这一问题等等,那么size_t
出现自然.您还会在通用函数中使用什么,例如,保证在每个可能的实现上分配尽可能多的内存?你会int
用来传递字节数吗?或许long int
?您需要阅读编译器手册,检查相应的类型等,然后使用它.这就是C++实现为您所做的,定义了一个合适的类型.