任何C类型的保证最小尺寸?
您通常可以对数据类型的最小大小做出任何假设吗?
到目前为止,我读到的是:
浮动??? 双???
float.h和limits.h系统中的值是否依赖于?
这在维基百科文章中有所介绍:
short int不能大于int 。
int不能大于long int 。
short int必须至少有16位长。
一个int必须至少有16位长。
long int必须至少有32位长。
long long int必须至少为64位。
该标准并不要求这些尺寸中的任何一种尺寸必然不同。 例如,如果所有四种类型都是64位长,则它是完全有效的。
是的, float.h和limits.h中的值是依赖于系统的。 你不应该对一个类型的宽度做出假设,但是标准确实会规定一些最小值。 参见C99标准的§6.2.5和§5.2.4.2.1。
例如,该标准只说明一个char应该足够大以容纳执行字符集中的每个字符。 它并没有说它有多宽。
对于浮点的情况,标准提示的类型的宽度的顺序是:
§6.2.5.10
有三种真正的浮动类型,分别为float , double和long double 。 32) float类型的值的集合是double类型的值集合的子集; 类型double的值集合是long double类型的值集合的子集。
他们含蓄地定义哪一个比另一个宽,但不具体是多宽。 “子集”本身是模糊的,因为一个long double精度可以有一个精确的double精度范围并且满足这个子句。
这是C的特点,非常典型,每个单独的环境都有很多。 你不能假设,你必须问问编译器。
但是,新的C99指定(在stdint.h )最小大小的可选类型,如uint_least8_t , int_least32_t等等。
(请参阅en_wikipedia_Stdint_h)
