为什么原始数据类型具有固定大小?

时间:2021-02-06 16:41:39

标签: java c++ c types primitive

在大多数编程语言中,通常是 C、C++ 和 Java,整数数据类型是“int”、“short”和“long”。 “int”数据类型通常是 32 位。 “short”数据类型通常与“int”数据类型一样小,“long”数据类型通常与“int”数据类型一样大。数据类型的第一位是符号位。负数以 1 开头,非负数以 0 开头。因此,32 位数据类型通常存储范围从 -(2^31) 到 (2^31 - 1) 的数字。但是为什么每个原始数据类型都有固定的大小?为什么我们不能拥有无限大小的数据类型,以便我们可以存储无限范围的数字?

2 个答案:

答案 0 :(得分:2)

简单的答案:性能

对于 C、C++ 和 Java 三种语言,都存在大整数库。但是使用这些库的性能通常比常规数据类型差得多。在 CPU 时间和内存使用方面。

答案 1 :(得分:2)

作为低级编程语言,C 和 C++ 的设计严​​格遵循通用硬件的能力。原始构建块(基本类型)对应于常见 CPU 本身支持的实体。 CPU 通常可以非常有效地处理字节和字; C 称这些为 charint。 (更准确地说,C 以这样一种方式定义了 int,编译器可以使用目标 CPU 的字长。)CPU 也支持双倍大小的字,这在历史上对应于 {{1} } C 中的数据类型,后来是 C 和 C++ 的 long 类型。半字对应于long long。基本整数类型对应于 CPU 可以很好处理的事物,具有足够的灵活性以适应不同的体系结构。 (例如,如果 CPU 不支持半字,则 short 可能与 short 的大小相同。)

如果硬件支持无限大小的整数(仅受可用内存限制),那么可能有一个论据将其添加为 C(和 C++)中的基本类型。在此之前,C 和 C++ 中对大整数的支持(请参阅 )已归入库。

一些较新的高级语言确实内置了对任意精度算术的支持。

相关问题