【发布时间】:2016-01-01 19:50:02
【问题描述】:
我是一名电气工程师,后来转向计算机科学家。我真的很难理解为什么在 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 并让所有兄弟退休的优势相比有多大帮助???
【问题讨论】:
-
native 类型(如
int、short等)之所以存在,部分原因是 C 有,而 C++ 最初只是生成 C 代码的预处理器,另一部分是因为它使编码“接近金属”要容易得多。类型别名(如size_t)是为了使代码更清晰,更能显示意图。使用size_t你说“这是一个大小”,所以它更多地是为了程序员而不是编译器的需要。 -
unsigned int vs. size_t 的可能重复项,或“相关”部分中的任何其他 size_t 问题。
-
替换为 .... 什么?
-
int 的兄弟之一是 char,它是一种较小的整数类型。另一种是long long,至少64位。似乎这些都不能用任何大小的 int 合理地替换。你真的想通过将每个字符存储在八个字节中来增加字符串吗?如果没有,您是否准备说没有足够大的整数类型来容纳您的内存大小,结果您只能将它的一小部分用于单个对象?生成的模型可能有更少的移动部件,但我会说移动它们会更烦人。
-
@HoapHumanoid:你需要给程序员一种表达需求的方式,不是吗?这些可能是算法的(即知道数字有多大)或者它们可能是环境的(即这个平台上对象的大小;这个平台上一个字符的大小)。 C/C++ 提供了这两种选择,以及一些主观的选择(“biggish”、“smallish”)。在幕后,只有少数类型,因为大多数定义都是别名。但是别名只是让我说出我需要的东西,而不是让我研究我将要使用的每一个架构。
标签: c++ c programming-languages typing size-t