j r*_*riv 3 c programming-languages c99
我注意到在windows和linux x86上,float是4bytes,double是8,但long xins分别是x86和x86_64上的12和16.C99应该用特定的整体尺寸打破这种障碍.
最初的技术限制似乎是由于x86处理器无法处理超过80位的浮点运算(加上2个字节来进行舍入),但为什么标准与int类型相比不一致?他们为什么不至少达到80bit标准化?
C语言没有指定各种类型的实现,因此可以在尽可能广泛的硬件上有效地实现它.
这也扩展到整数类型--C 标准积分类型具有最小范围(例如signed char
-127到127,short
并且int
是-32,767到32,767,long
是-2,147,483,647到2,147,483,647,并且long long
是-9,223,372,036,854,775,807到9,223,372,036,854,775,807).几乎所有目的,这都是程序员需要知道的.
C99确实提供了"固定宽度"整数类型,比如int32_t
- 但这些是可选的 - 如果实现不能有效地提供这样的类型,它就不必提供它.
对于浮点类型,存在等效限制(例如,double
必须具有至少10个十进制数字的精度).