任何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)