IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    cstdint

    TacuLee发表于 2015-06-05 06:54:51
    love 0
    header

    (stdint.h)

    Integer types
    This header defines a set of integral type aliases with specific width requirements, along with macros specifying their limits and macro functions to create values of these types.

     整数数据类型的别名,数据表示范围,以及宏函数。

    Types

    The following are typedefs of fundamental integral types or extended integral types.

    signed type unsigned type description
    intmax_t uintmax_t Integer type with the maximum width supported.
    int8_t uint8_t Integer type with a width of exactly 8, 16, 32, or 64 bits.
    For signed types, negative values are represented using 2’s complement.
    No padding bits.
    Optional: These typedefs are not defined if no types with such characteristics exist.*
    int16_t uint16_t
    int32_t uint32_t
    int64_t uint64_t
    int_least8_t uint_least8_t Integer type with a minimum of 8, 16, 32, or 64 bits.
    No other integer type exists with lesser size and at least the specified width.
    int_least16_t uint_least16_t
    int_least32_t uint_least32_t
    int_least64_t uint_least64_t
    int_fast8_t uint_fast8_t Integer type with a minimum of 8, 16, 32, or 64 bits.
    At least as fast as any other integer type with at least the specified width.
    int_fast16_t uint_fast16_t
    int_fast32_t uint_fast32_t
    int_fast64_t uint_fast64_t
    intptr_t uintptr_t Integer type capable of holding a value converted from a void pointer and then be converted back to that type with a value that compares equal to the original pointer.
    Optional: These typedefs may not be defined in some library implementations.*

    Some of these typedefs may denote the same types. Therefore, function overloads should not rely on these being different.

    * Notice that some types are optional (and thus, with no portability guarantees). A particular library implementation may also define additional types with other widths supported by its system. In any case, if either the signed or the unsigned version is defined, both the signed and unsigned versions are defined.

    Macros

    Limits of cstdint types

    Macro description defined as
    INTMAX_MIN Minimum value of intmax_t -(263-1), or lower
    INTMAX_MAX Maximum value of intmax_t 263-1, or higher
    UINTMAX_MAX Maximum value of uintmax_t 264-1, or higher
    INTN_MIN Minimum value of exact-width signed type Exactly -2(N-1)
    INTN_MAX Maximum value of exact-width signed type Exactly 2(N-1)-1
    UINTN_MAX Maximum value of exact-width unsigned type Exactly 2N-1
    INT_LEASTN_MIN Minimum value of minimum-width signed type -(2(N-1)-1), or lower
    INT_LEASTN_MAX Maximum value of minimum-width signed type 2(N-1)-1, or higher
    UINT_LEASTN_MAX Maximum value of minimum-width unsigned type 2N-1, or higher
    INT_FASTN_MIN Minimum value of fastest minimum-width signed type -(2(N-1)-1), or lower
    INT_FASTN_MAX Maximum value of fastest minimum-width signed type 2(N-1)-1, or higher
    UINT_FASTN_MAX Maximum value of fastest minimum-width unsigned type 2N-1, or higher
    INTPTR_MIN Minimum value of intptr_t -(215-1), or lower
    INTPTR_MAX Maximum value of intptr_t 215-1, or higher
    UINTPTR_MAX Maximum value of uintptr_t 216-1, or higher

    Where N is one in 8, 16, 32, 64, or any other type width supported by the library.

    Only the macros corresponding to types supported by the library are defined.

    Limits of other types

    Limits of other standard integral types:

    Macro description defined as
    SIZE_MAX Maximum value of size_t 264-1, or higher
    PTRDIFF_MIN Minimum value of ptrdiff_t -(216-1), or lower
    PTRDIFF_MAX Maximum value of ptrdiff_t 216-1, or higher
    SIG_ATOMIC_MIN Minimum value of sig_atomic_t if sig_atomic_t is signed: -127, or lower
    if sig_atomic_t is unsigned: 0
    SIG_ATOMIC_MAX Maximum value of sig_atomic_t if sig_atomic_t is signed: 127, or higher
    if sig_atomic_t is unsigned: 255, or higher
    WCHAR_MIN Minimum value of wchar_t if wchar_t is signed: -127, or lower
    if wchar_t is unsigned: 0
    WCHAR_MAX Maximum value of wchar_t if wchar_t is signed: 127, or higher
    if wchar_t is unsigned: 255, or higher
    WINT_MIN Minimum value of wint_t if wint_t is signed: -32767, or lower
    if wint_t is unsigned: 0
    WINT_MAX Maximum value of wint_t if wint_t is signed: 32767, or higher
    if wint_t is unsigned: 65535, or higher

    Function-like macros

    These function-like macros expand to integer constants suitable to initialize objects of the types above:

    Macro description
    INTMAX_C expands to a value of type intmax_t
    UINTMAX_C expands to a value of type uintmax_t
    INTN_C expands to a value of type int_leastN_t
    UINTN_C expands to a value of type uint_leastN_t

    For example:

     
    INTMAX_C(2012)  // expands to 2012LL or similar 

    /* The ISO C99 standard specifies that in C++ implementations these
    macros should only be defined if explicitly requested. */
    #if !defined __cplusplus || defined __STDC_LIMIT_MACROS
    
    # if __WORDSIZE == 64
    # define __INT64_C(c) c ## L
    # define __UINT64_C(c) c ## UL
    # else
    # define __INT64_C(c) c ## LL
    # define __UINT64_C(c) c ## ULL
    # endif
    
    /* Limits of integral types. */
    
    /* Minimum of signed integral types. */
    # define INT8_MIN       (-128)
    # define INT16_MIN      (-32767-1)
    # define INT32_MIN      (-2147483647-1)
    # define INT64_MIN      (-__INT64_C(9223372036854775807)-1)
    /* Maximum of signed integral types. */
    # define INT8_MAX       (127)
    # define INT16_MAX      (32767)
    # define INT32_MAX      (2147483647)
    # define INT64_MAX      (__INT64_C(9223372036854775807))
    
    /* Maximum of unsigned integral types. */
    # define UINT8_MAX      (255)
    # define UINT16_MAX     (65535)
    # define UINT32_MAX     (4294967295U)
    # define UINT64_MAX     (__UINT64_C(18446744073709551615))
    
    
    /* Minimum of signed integral types having a minimum size. */
    # define INT_LEAST8_MIN     (-128)
    # define INT_LEAST16_MIN    (-32767-1)
    # define INT_LEAST32_MIN    (-2147483647-1)
    # define INT_LEAST64_MIN    (-__INT64_C(9223372036854775807)-1)
    /* Maximum of signed integral types having a minimum size. */
    # define INT_LEAST8_MAX     (127)
    # define INT_LEAST16_MAX    (32767)
    # define INT_LEAST32_MAX    (2147483647)
    # define INT_LEAST64_MAX    (__INT64_C(9223372036854775807))
    
    /* Maximum of unsigned integral types having a minimum size. */
    # define UINT_LEAST8_MAX    (255)
    # define UINT_LEAST16_MAX   (65535)
    # define UINT_LEAST32_MAX   (4294967295U)
    # define UINT_LEAST64_MAX   (__UINT64_C(18446744073709551615))
    
    
    /* Minimum of fast signed integral types having a minimum size. */
    # define INT_FAST8_MIN      (-128)
    # if __WORDSIZE == 64
    # define INT_FAST16_MIN    (-9223372036854775807L-1)
    # define INT_FAST32_MIN    (-9223372036854775807L-1)
    # else
    # define INT_FAST16_MIN    (-2147483647-1)
    # define INT_FAST32_MIN    (-2147483647-1)
    # endif
    # define INT_FAST64_MIN     (-__INT64_C(9223372036854775807)-1)
    /* Maximum of fast signed integral types having a minimum size. */
    # define INT_FAST8_MAX      (127)
    # if __WORDSIZE == 64
    # define INT_FAST16_MAX    (9223372036854775807L)
    # define INT_FAST32_MAX    (9223372036854775807L)
    # else
    # define INT_FAST16_MAX    (2147483647)
    # define INT_FAST32_MAX    (2147483647)
    # endif
    # define INT_FAST64_MAX     (__INT64_C(9223372036854775807))
    
    /* Maximum of fast unsigned integral types having a minimum size. */
    # define UINT_FAST8_MAX     (255)
    # if __WORDSIZE == 64
    # define UINT_FAST16_MAX   (18446744073709551615UL)
    # define UINT_FAST32_MAX   (18446744073709551615UL)
    # else
    # define UINT_FAST16_MAX   (4294967295U)
    # define UINT_FAST32_MAX   (4294967295U)
    # endif
    # define UINT_FAST64_MAX    (__UINT64_C(18446744073709551615))
    
    
    /* Values to test for integral types holding `void *' pointer. */
    # if __WORDSIZE == 64
    # define INTPTR_MIN        (-9223372036854775807L-1)
    # define INTPTR_MAX        (9223372036854775807L)
    # define UINTPTR_MAX       (18446744073709551615UL)
    # else
    # define INTPTR_MIN        (-2147483647-1)
    # define INTPTR_MAX        (2147483647)
    # define UINTPTR_MAX       (4294967295U)
    # endif
    
    
    /* Minimum for largest signed integral type. */
    # define INTMAX_MIN     (-__INT64_C(9223372036854775807)-1)
    /* Maximum for largest signed integral type. */
    # define INTMAX_MAX     (__INT64_C(9223372036854775807))
    
    /* Maximum for largest unsigned integral type. */
    # define UINTMAX_MAX        (__UINT64_C(18446744073709551615))
    
    
    /* Limits of other integer types. */
    
    /* Limits of `ptrdiff_t' type. */
    # if __WORDSIZE == 64
    # define PTRDIFF_MIN       (-9223372036854775807L-1)
    # define PTRDIFF_MAX       (9223372036854775807L)
    # else
    # define PTRDIFF_MIN       (-2147483647-1)
    # define PTRDIFF_MAX       (2147483647)
    # endif
    
    /* Limits of `sig_atomic_t'. */
    # define SIG_ATOMIC_MIN     (-2147483647-1)
    # define SIG_ATOMIC_MAX     (2147483647)
    
    /* Limit of `size_t' type. */
    # if __WORDSIZE == 64
    # define SIZE_MAX      (18446744073709551615UL)
    # else
    # define SIZE_MAX      (4294967295U)
    # endif
    
    /* Limits of `wchar_t'. */
    # ifndef WCHAR_MIN
    /* These constants might also be defined in . */
    # define WCHAR_MIN     __WCHAR_MIN
    # define WCHAR_MAX     __WCHAR_MAX
    # endif
    
    /* Limits of `wint_t'. */
    # define WINT_MIN       (0u)
    # define WINT_MAX       (4294967295u)
    
    #endif /* C++ && limit macros */
    
    
    /* The ISO C99 standard specifies that in C++ implementations these
    should only be defined if explicitly requested. */
    #if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
    
    /* Signed. */
    # define INT8_C(c) c
    # define INT16_C(c) c
    # define INT32_C(c) c
    # if __WORDSIZE == 64
    # define INT64_C(c)    c ## L
    # else
    # define INT64_C(c)    c ## LL
    # endif
    
    /* Unsigned. */
    # define UINT8_C(c) c ## U
    # define UINT16_C(c)    c ## U
    # define UINT32_C(c)    c ## U
    # if __WORDSIZE == 64
    # define UINT64_C(c)   c ## UL
    # else
    # define UINT64_C(c)   c ## ULL
    # endif
    
    /* Maximal type. */
    # if __WORDSIZE == 64
    # define INTMAX_C(c)   c ## L
    # define UINTMAX_C(c) c ## UL
    # else
    # define INTMAX_C(c)   c ## LL
    # define UINTMAX_C(c) c ## ULL
    # endif
    
    #endif /* C++ && constant macros */
    
    #endif /* stdint.h */

    未经允许不得转载:TacuLee » cstdint



沪ICP备19023445号-2号
友情链接