任何C类型的保证最小尺寸?

您通常可以对数据类型的最小大小做出任何假设吗?

到目前为止,我读到的是:

  • char:1个字节
  • 简短:2字节
  • int:2个字节,通常为4个字节
  • 长:4字节
  • 浮动??? 双???

    float.hlimits.h系统中的值是否依赖于?


    这在维基百科文章中有所介绍:

    short int不能大于int
    int不能大于long int

    short int必须至少有16位长。
    一个int必须至少有16位长。
    long int必须至少有32位长。
    long long int必须至少为64位。

    该标准并不要求这些尺寸中的任何一种尺寸必然不同。 例如,如果所有四种类型都是64位长,则它是完全有效的。


    是的, float.hlimits.h中的值是依赖于系统的。 你不应该对一个类型的宽度做出假设,但是标准确实会规定一些最小值。 参见C99标准的§6.2.5和§5.2.4.2.1。

    例如,该标准只说明一个char应该足够大以容纳执行字符集中的每个字符。 它并没有说它有多宽。

    对于浮点的情况,标准提示的类型的宽度的顺序是:

    §6.2.5.10

    有三种真正的浮动类型,分别为floatdoublelong double 。 32) float类型的值的集合是double类型的值集合的子集; 类型double的值集合是long double类型的值集合的子集。

    他们含蓄地定义哪一个比另一个宽,但不具体是多宽。 “子集”本身是模糊的,因为一个long double精度可以有一个精确的double精度范围并且满足这个子句。

    这是C的特点,非常典型,每个单独的环境都有很多。 你不能假设,你必须问问编译器。


    但是,新的C99指定(在stdint.h )最小大小的可选类型,如uint_least8_tint_least32_t等等。
    (请参阅en_wikipedia_Stdint_h)

    链接地址: http://www.djcxy.com/p/58327.html

    上一篇: Any guaranteed minimum sizes for types in C?

    下一篇: Why are c/c++ floating point types so oddly named?