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

为什么原始数据类型有固定的大小? 在大多数编程语言中,通常是C、C++和java,整数数据类型是“int”、“短”和“长”。“int”数据类型通常为32位。“短”数据类型通常与“int”数据类型一样小,“长”数据类型通常与“int”数据类型一样大。数据类型的第一位是符号位。负数以1开头,非负数以0开头。因此,32位数据类型通常存储范围为-(2^31)到(2^31-1)的数字。但是为什么每个基本数据类型都有固定的大小呢?为什么我们不能有一个无限大小的数据类型,这样我们就可以存储无限范围的数字呢?,java,c++,c,types,primitive,bigint,Java,C++,C,Types,Primitive,Bigint,简单的回答:性能 对于C、C++和java的三个都存在大整数的库。但是使用这些库通常比常规数据类型的性能差得多。在CPU时间和内存使用方面,作为低级编程语言,C和C++的设计紧密地遵循普通硬件所能做到的。基本构建块(基本类型)对应于公共CPU本机支持的实体。CPU通常可以非常有效地处理字节和字;C调用这些char和int。(更确切地说,C定义的代码 INT/COM>这样编译器可以使用目标CPU的字大小。)也有双尺寸词的CPU支持,这在历史上对应于C中的长< /Cord>数据类型,后来对应到C和C

简单的回答:性能


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

作为低级编程语言,C和C++的设计紧密地遵循普通硬件所能做到的。基本构建块(基本类型)对应于公共CPU本机支持的实体。CPU通常可以非常有效地处理字节和字;C调用这些

char
int
。(更确切地说,C定义的代码<代码> INT/COM>这样编译器可以使用目标CPU的字大小。)也有双尺寸词的CPU支持,这在历史上对应于C中的<代码>长< /Cord>数据类型,后来对应到C和C++的<>代码>长长< /C> >类型。与
short
相对应的半个单词。基本整数类型对应于CPU可以很好地处理的事情,具有足够的灵活性以适应不同的体系结构。(例如,如果CPU不支持半个字,
short
的大小可能与
int
的大小相同)

如果硬件支持无限大的整数(仅受可用内存的限制),那么在C(和C++中)中可以将其作为基本类型添加。在此之前,C和C++中的大整数(见)的支持已被降级为库。


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

我们有它们。例如,在java中,我们有
biginger
,它的精度是不确定的。但我们也有已知大小的数据类型,例如,因为性能原因和/或历史原因。这就像问为什么计算机支持位而不是任意的基数。原语是硬件支持的。Java不太多,但C应该是直接对应的我看不出这是如何基于观点的但为什么每个原始数据类型都有固定的大小?您甚至如何开始定义一个具有无限大小的类型,而不以固定大小开始?如果没有固定的东西,你甚至无法定义“大小”的含义。