我读过C编译器必须为 short 类型分配2个字节,并且必须为 long 类型分配4个字节。因此,根据系统, int 类型可以有2个字节或4个字节。那么,它的目的是什么?如果我们需要一个2字节的数字,我们可以使用 short ,如果我们需要一个4字节的数字,我们可以使用 long 。如果系统是16位或者不是16位,我觉得 int 就像赌博一样。 (我一般不明白为什么C不能自己决定数字需要多少内存,就像Python一样)
答案 0 :(得分:2)
在B中,C的祖先,唯一的类型是int
。它是“机器字”的大小,通常可以说是16位系统上16位寄存器的大小,32位系统上的32位,依此类推。 C只是保留了这种类型。当需要更少或更多范围时,引入short
和long
作为控制存储空间的方法。当可用内存受限时,这很重要:当您知道值永远不会超过long
的范围时,为什么要分配short
?
我一般不明白为什么C不能自己决定数字需要多少内存,就像Python一样
Python使用arbitrary-precision表示法动态决定这一点。 C静态地决定它,并要求它由程序员指定。由于type inference,存在静态类型语言,其中不需要类型注释。如果你想在C中使用任意精度的整数,你可以使用GMP,它提供mpz_t
以及许多其他类型和函数用于任意精度算术。