为什么C/C99标准的作者没有为sizeof浮点类型指定..standard?

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标准化?

caf*_*caf 5

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个十进制数字的精度).