c++ - 为什么 size_t 存在于 C/C++ 中并且可以/应该被替换?

标签 c++ c programming-languages typing size-t

我是一名电气工程师,后来成为计算机科学家。我真的很难理解为什么在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_tunsigned 基本类型的 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++ 实现为您所做的,定义适当的此类类型。

关于c++ - 为什么 size_t 存在于 C/C++ 中并且可以/应该被替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34559469/

相关文章:

c++ - TCP 客户端消息处理

c++ - set sysroot 命令与 set solib-search-path 命令

c - 有没有不支持任何形式的反射的主要编程语言?

c++ - D 和 C++ 目前的互操作状态

java - 注释会影响编译时间吗?

c++ - 通知 : How to be notified of new files in the directory after they are complete in transfer?

c++ - 从 YUY2 到 RGB24 的快速转换

c++ - 如何在 GNU C 中使用 mcheck 进行堆一致性检查?

c++ - 是否可以列出 QQmlContext 的上下文属性名称?

c - C 中的星号空格 - 额外的空格是什么意思?