登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

银河里的星星

落在人间

 
 
 

日志

 
 

Inttypes.h  

2010-04-12 22:48:00|  分类: 程序设计语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
include 文件 <inttypes.h> 提供有助于使代码与显式指定大小的数据项兼容(无论编译环境如何)的常量、宏和派生类型。它包含用于处理 8 位、16 位、32 位和 64 位对象的机制。该文件是新的 1999 ISO/IEC C 标准的一部分,文件内容反映了导致它包含在 1999 ISO/IEC C 标准中的建议。文件即将更新,以便完全与 1999 ISO/IEC C 标准一致。<inttypes.h> 提供的基本功能包括:

  • 定宽整型

  • 诸如 uintptr_t 的有用类型

  • 常量宏

  • 限制

  • 格式字符串宏

以下各节提供有关 <inttypes.h> 基本功能的更多信息。

定宽整型

<inttypes.h> 提供的定宽整型包括带符号整型(如 int8_tint16_tint32_tint64_t) 和无符号整型(如 uint8_tuint16_tuint32_tuint64_t)。

定义为可容纳规定位数的最短整型的派生类型包括 int_least8_tint_least64_tuint_least8_tuint_least64_t 等。

对于循环计数器和文件描述符等操作,使用 int 或无符号 int 是安全的;对于数组索引,使用 long 也是安全的。但是,不应不加选择地使用这些定宽类型。可将定宽类型用于下列各项的显式二进制表示:

  • 磁盘数据

  • 通过数据线

  • 硬件寄存器

  • 二进制接口规范

  • 二进制数据结构

诸如 unintptr_t 的有用类型

<inttypes.h> 文件包括大小足以容纳一个指针的带符号整型和无符号整型。这些类型以 intptr_tuintptr_t 形式提供。此外,<inttypes.h> 还提供 intmax_tuintmax_t,后两者是可用的最长(以位为单位)带符号整型和无符号整型。

使用 uintptr_t 类型作为指针的整型而非基本类型,如无符号 long。尽管在 ILP32 和 LP64 数据模型中,无符号 long 与指针的长度相同,但如果使用 uintptr_t,则在数据模型更改 时,只有 uintptr_t 的定义受影响。这使您的代码可移植到许多其他系统中。它也是在 C 中更清楚地表达意图的方式。

需要执行地址运算时,intptr_tuintptr_t 类型对于强制转换指针非常有用。因此,应使用 intptr_tuintptr_t 类型,而不是 long 或无符号 long

常量宏

使用宏 INT8_C(c)INT64_C(c)UINT8_C(c)UINT64_C(c) 等指定给定常量的大小和符号。基本上,必要时这些宏会在常量的末尾添上 lulllull。 例如,对于 ILP32,INT64_C(1) 会在常量 1 后面附加 ll;对于 LP64,则附加 l。

可使用 INTMAX_C(c)UINTMAX_C(c) 宏使常量成为最长类型。这些宏对于指定7.3 转换为 LP64 数据类型模型中介绍的常量类型会非常有用。

限制

<inttypes.h> 定义的限制是用于指定各种整型的最小值和最大值的常量,其中包括每个定宽类型的最小值(如 INT8_MININT64_MIN 等)和最大值(如 INT8_MAXINT64_MAX 等)及其对应的无符号的最小值和最大值。

<inttypes.h> 文件还提供每个最短长度类型的最小值和最大值,其中包括 INT_LEAST8_MININT_LEAST64_MININT_LEAST8_MAXINT_LEAST64_MAX 等及其对应的无符号的最小值和最大值。

最后,<inttypes.h> 还定义支持的最长整型的最小值和最大值,其中包括 INTMAX_MININTMAX_MAX 及其对应的无符号的最小值和最大值。

格式字符串宏

<inttypes.h> 文件还包括指定 printf(3S)scanf(3S) 格式说明符的宏。实质上,如果宏名称内置了参数的位数,这些宏将在格式说明符前面添加 lll,以便将参数 标识为 longlong long

printf(3S) 的宏以十进制、八进制、无符号和十六进制格式输出最短和最长整型,如以下示例所示:


int64_t i;  printf("i =%" PRIx64 "\n", i);

同样,scanf(3S) 的宏以十进制、八进制、无符号和十六进制格式读取最短和最长整型。


uint64_t u;  scanf("%" SCNu64 "\n", &u);

不要不加区别地使用这些宏。最好将它们与定宽整型中介 绍的定宽类型一起使用。


<inttypes.h>

[added with C99]


de>abs · div · imaxabs · imaxdiv · imaxdiv_t · strtoimax · strtoumax · wcstoimax · wcstoumax de>

de>PRId8 · PRId16 · PRId32 · PRId64 · PRIdFAST8 · PRIdFAST16 · PRIdFAST32 · PRIdFAST64 · PRIdLEAST8 · PRIdLEAST16 · PRIdLEAST32 · PRIdLEAST64 · PRIdMAX · PRIdPTR · PRIi8 · PRIi16 · PRIi32 · PRIi64 · PRIiFAST8 · PRIiFAST16 · PRIiFAST32 · PRIiFAST64 · PRIiLEAST8 · PRIiLEAST16 · PRIiLEAST32 · PRIiLEAST64 · PRIiMAX · PRIiPTR · PRIo8 · PRIo16 · PRIo32 · PRIo64 · PRIoFAST8 · PRIoFAST16 · PRIoFAST32 · PRIoFAST64 · PRIoLEAST8 · PRIoLEAST16 · PRIoLEAST32 · PRIoLEAST64 · PRIoMAX · PRIoPTR · PRIu8 · PRIu16 · PRIu32 · PRIu64 · PRIuFAST8 · PRIuFAST16 · PRIuFAST32 · PRIuFAST64 · PRIuLEAST8 · PRIuLEAST16 · PRIuLEAST32 · PRIuLEAST64 · PRIuMAX · PRIuPTR · PRIx8 · PRIx16 · PRIx32 · PRIx64 · PRIxFAST8 · PRIxFAST16 · PRIxFAST32 · PRIxFAST64 · PRIxLEAST8 · PRIxLEAST16 · PRIxLEAST32 · PRIxLEAST64 · PRIxMAX · PRIxPTR · PRIX8 · PRIX16 · PRIX32 · PRIX64 · PRIXFAST8 · PRIXFAST16 · PRIXFAST32 · PRIXFAST64 · PRIXLEAST8 · PRIXLEAST16 · PRIXLEAST32 · PRIXLEAST64 · PRIXMAX · PRIXPTR de>

de>SCNd8 · SCNd16 · SCNd32 · SCNd64 · SCNdFAST8 · SCNdFAST16 · SCNdFAST32 · SCNdFAST64 · SCNdLEAST8 · SCNdLEAST16 · SCNdLEAST32 · SCNdLEAST64 · SCNdMAX · SCNdPTR · SCNi8 · SCNi16 · SCNi32 · SCNi64 · SCNiFAST8 · SCNiFAST16 · SCNiFAST32 · SCNiFAST64 · SCNiLEAST8 · SCNiLEAST16 · SCNiLEAST32 · SCNiLEAST64 · SCNiMAX · SCNiPTR · SCNo8 · SCNo16 · SCNo32 · SCNo64 · SCNoFAST8 · SCNoFAST16 · SCNoFAST32 · SCNoFAST64 · SCNoLEAST8 · SCNoLEAST16 · SCNoLEAST32 · SCNoLEAST64 · SCNoMAX · SCNoPTR · SCNu8 · SCNu16 · SCNu32 · SCNu64 · SCNuFAST8 · SCNuFAST16 · SCNuFAST32 · SCNuFAST64 · SCNuLEAST8 · SCNuLEAST16 · SCNuLEAST32 · SCNuLEAST64 · SCNuMAX · SCNuPTR · SCNx8 · SCNx16 · SCNx32 · SCNx64 · SCNxFAST8 · SCNxFAST16 · SCNxFAST32 · SCNxFAST64 · SCNxLEAST8 · SCNxLEAST16 · SCNxLEAST32 · SCNxLEAST64 · SCNxMAX · SCNxPTR de>


Include the standard header de><inttypes.h>de> to include the standard header de><stdint.h>de> and to define a type, several functions, and numerous macros for fine control over the conversion of integers. Note that the definitions shown for the macros are merely representative -- they can vary among implementations.

        /* TYPE DEFINITIONS */
typedef struct {
intmax_t quot, rem;
} imaxdiv_t;

/* FUNCTION DECLARATIONS */
intmax_t imaxabs(intmax_t i);
intmax_t abs(intmax_t i); [C++ only]

imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom);
imaxdiv_t div(intmax_t numer, intmax_t denom); [C++ only]

intmax_t strtoimax(const char *restrict s,
char **restrict endptr, int base);
uintmax_t strtoumax(const char *restrict s,
char **restrict endptr, int base);
intmax_t wcstoimax(const wchar_t *restrict s,
wchar_t **restrict endptr, int base);
uintmax_t wcstoumax(const wchar_t *restrict s,
wchar_t **restrict endptr, int base);

/* PRINT FORMAT MACROS */
#define PRId8 "hhd"
#define PRId16 "hd"
#define PRId32 "ld"
#define PRId64 "lld"

#define PRIdFAST8 "hhd"
#define PRIdFAST16 "hd"
#define PRIdFAST32 "ld"
#define PRIdFAST64 "lld"

#define PRIdLEAST8 "hhd"
#define PRIdLEAST16 "hd"
#define PRIdLEAST32 "ld"
#define PRIdLEAST64 "lld"

#define PRIdMAX "lld"
#define PRIdPTR "lld"

#define PRIi8 "hhi"
#define PRIi16 "hi"
#define PRIi32 "li"
#define PRIi64 "lli"

#define PRIiFAST8 "hhi"
#define PRIiFAST16 "hi"
#define PRIiFAST32 "li"
#define PRIiFAST64 "lli"

#define PRIiLEAST8 "hhi"
#define PRIiLEAST16 "hi"
#define PRIiLEAST32 "li"
#define PRIiLEAST64 "lli"

#define PRIiMAX "lli"
#define PRIiPTR "lli"

#define PRIo8 "hho"
#define PRIo16 "ho"
#define PRIo32 "lo"
#define PRIo64 "llo"

#define PRIoFAST8 "hho"
#define PRIoFAST16 "ho"
#define PRIoFAST32 "lo"
#define PRIoFAST64 "llo"

#define PRIoLEAST8 "hho"
#define PRIoLEAST16 "ho"
#define PRIoLEAST32 "lo"
#define PRIoLEAST64 "llo"

#define PRIoMAX "llo"
#define PRIoPTR "llo"

#define PRIu8 "hhu"
#define PRIu16 "hu"
#define PRIu32 "lu"
#define PRIu64 "llu"

#define PRIuFAST8 "hhu"
#define PRIuFAST16 "hu"
#define PRIuFAST32 "lu"
#define PRIuFAST64 "llu"

#define PRIuLEAST8 "hhu"
#define PRIuLEAST16 "hu"
#define PRIuLEAST32 "lu"
#define PRIuLEAST64 "llu"

#define PRIuMAX "llu"
#define PRIuPTR "llu"

#define PRIx8 "hhx"
#define PRIx16 "hx"
#define PRIx32 "lx"
#define PRIx64 "llx"

#define PRIxFAST8 "hhx"
#define PRIxFAST16 "hx"
#define PRIxFAST32 "lx"
#define PRIxFAST64 "llx"

#define PRIxLEAST8 "hhx"
#define PRIxLEAST16 "hx"
#define PRIxLEAST32 "lx"
#define PRIxLEAST64 "llx"

#define PRIxMAX "llx"
#define PRIxPTR "llx"

#define PRIX8 "hhX"
#define PRIX16 "hX"
#define PRIX32 "lX"
#define PRIX64 "llX"

#define PRIXFAST8 "hhX"
#define PRIXFAST16 "hX"
#define PRIXFAST32 "lX"
#define PRIXFAST64 "llX"

#define PRIXLEAST8 "hhX"
#define PRIXLEAST16 "hX"
#define PRIXLEAST32 "lX"
#define PRIXLEAST64 "llX"

#define PRIXMAX "llX"
#define PRIXPTR "llX"

/* SCAN FORMAT MACROS */
#define SCNd8 "hhd"
#define SCNd16 "hd"
#define SCNd32 "ld"
#define SCNd64 "lld"

#define SCNdFAST8 "hhd"
#define SCNdFAST16 "hd"
#define SCNdFAST32 "ld"
#define SCNdFAST64 "lld"

#define SCNdLEAST8 "hhd"
#define SCNdLEAST16 "hd"
#define SCNdLEAST32 "ld"
#define SCNdLEAST64 "lld"

#define SCNdMAX "lld"
#define SCNdPTR "lld"

#define SCNi8 "hhi"
#define SCNi16 "hi"
#define SCNi32 "li"
#define SCNi64 "lli"

#define SCNiFAST8 "hhi"
#define SCNiFAST16 "hi"
#define SCNiFAST32 "li"
#define SCNiFAST64 "lli"

#define SCNiLEAST8 "hhi"
#define SCNiLEAST16 "hi"
#define SCNiLEAST32 "li"
#define SCNiLEAST64 "lli"

#define SCNiMAX "lli"
#define SCNiPTR "lli"

#define SCNo8 "hho"
#define SCNo16 "ho"
#define SCNo32 "lo"
#define SCNo64 "llo"

#define SCNoFAST8 "hho"
#define SCNoFAST16 "ho"
#define SCNoFAST32 "lo"
#define SCNoFAST64 "llo"

#define SCNoLEAST8 "hho"
#define SCNoLEAST16 "ho"
#define SCNoLEAST32 "lo"
#define SCNoLEAST64 "llo"

#define SCNoMAX "llo"
#define SCNoPTR "llo"

#define SCNu8 "hhu"
#define SCNu16 "hu"
#define SCNu32 "lu"
#define SCNu64 "llu"

#define SCNuFAST8 "hhu"
#define SCNuFAST16 "hu"
#define SCNuFAST32 "lu"
#define SCNuFAST64 "llu"

#define SCNuLEAST8 "hhu"
#define SCNuLEAST16 "hu"
#define SCNuLEAST32 "lu"
#define SCNuLEAST64 "llu"

#define SCNuMAX "llu"
#define SCNuPTR "llu"

#define SCNx8 "hhx"
#define SCNx16 "hx"
#define SCNx32 "lx"
#define SCNx64 "llx"

#define SCNxFAST8 "hhx"
#define SCNxFAST16 "hx"
#define SCNxFAST32 "lx"
#define SCNxFAST64 "llx"

#define SCNxLEAST8 "hhx"
#define SCNxLEAST16 "hx"
#define SCNxLEAST32 "lx"
#define SCNxLEAST64 "llx"

#define SCNxMAX "llx"
#define SCNxPTR "llx"

de>imaxabsde>, de>absde>

intmax_t imaxabs(intmax_t i);
intmax_t abs(intmax_t i); [C++ only]

The function returns the absolute value of de>ide>, de>|i|de>.

de>imaxdivde>, de>divde>

imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom);
imaxdiv_t div(intmax_t numer, intmax_t denom); [C++ only]

The function divides de>numerde> by de>denomde> and returns both quotient and remainder in the structure result de>xde>, if the quotient can be represented. The structure member de>x.quotde> is the algebraic quotient truncated toward zero. The structure member de>x.remde> is the remainder, such that de>numer == x.quot*denom + x.remde>.

de>imaxdiv_tde>

typedef struct {
intmax_t quot, rem;
} imaxdiv_t;

The type is the structure type returned by the function de>imaxdivde>. The structure contains members that represent the quotient (de>quotde>) and remainder (de>remde>) of a signed integer division with operands of type intmax_t. The members shown above can occur in either order.

de>PRId8de>, de>PRId16de>, de>PRId32de>, de>PRId64de>

#define PRId8     "hhd"
#define PRId16 "hd"
#define PRId32 "ld"
#define PRId64 "lld"

The macros each expand to a string literal suitable for use as a de>dde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>int8_tde>, de>int16_tde>, de>int32_tde>, or de>int64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIdFAST8de>, de>PRIdFAST16de>, de>PRIdFAST32de>, de>PRIdFAST64de>

#define PRIdFAST8    "hhd"
#define PRIdFAST16 "hd"
#define PRIdFAST32 "ld"
#define PRIdFAST64 "lld"

The macros each expand to a string literal suitable for use as a de>dde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>int_fast8_tde>, de>int_fast16_tde>, de>int_fast32_tde>, or de>int_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIdLEAST8de>, de>PRIdLEAST16de>, de>PRIdLEAST32de>, de>PRIdLEAST64de>

#define PRIdLEAST8   "hhd"
#define PRIdLEAST16 "hd"
#define PRIdLEAST32 "ld"
#define PRIdLEAST64 "lld"

The macros each expand to a string literal suitable for use as a de>dde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>int_least8_tde>, de>int_least16_tde>, de>int_least32_tde>, or de>int_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIdMAXde>

#define PRIdMAX   "lld"

The macro expands to a string literal suitable for use as a de>dde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>intmax_tde>. Note that the definition shown here is merely representative.

de>PRIdPTRde>

#define PRIdPTR   "lld"

The macro expands to a string literal suitable for use as a de>dde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>intptr_tde>. Note that the definition shown here is merely representative.

de>PRIi8de>, de>PRIi16de>, de>PRIi32de>, de>PRIi64de>

#define PRIi8     "hhi"
#define PRIi16 "hi"
#define PRIi32 "li"
#define PRIi64 "lli"

The macros each expand to a string literal suitable for use as an de>ide> print conversion specificier, plus any needed qualifiers, to convert values of the types de>int8_tde>, de>int16_tde>, de>int32_tde>, or de>int64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIiFAST8de>, de>PRIiFAST16de>, de>PRIiFAST32de>, de>PRIiFAST64de>

#define PRIiFAST8    "hhi"
#define PRIiFAST16 "hi"
#define PRIiFAST32 "li"
#define PRIiFAST64 "lli"

The macros each expand to a string literal suitable for use as an de>ide> print conversion specificier, plus any needed qualifiers, to convert values of the types de>int_fast8_tde>, de>int_fast16_tde>, de>int_fast32_tde>, or de>int_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIiLEAST8de>, de>PRIiLEAST16de>, de>PRIiLEAST32de>, de>PRIiLEAST64de>

#define PRIiLEAST8   "hhi"
#define PRIiLEAST16 "hi"
#define PRIiLEAST32 "li"
#define PRIiLEAST64 "lli"

The macros each expand to a string literal suitable for use as an de>ide> print conversion specificier, plus any needed qualifiers, to convert values of the types de>int_least8_tde>, de>int_least16_tde>, de>int_least32_tde>, or de>int_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIiMAXde>

#define PRIiMAX   "lli"

The macro expands to a string literal suitable for use as an de>ide> print conversion specificier, plus any needed qualifiers, to convert values of the types de>intmax_tde>. Note that the definition shown here is merely representative.

de>PRIiPTRde>

#define PRIiPTR   "lli"

The macro expands to a string literal suitable for use as an de>ide> print conversion specificier, plus any needed qualifiers, to convert values of the types de>intptr_tde>. Note that the definition shown here is merely representative.

de>PRIo8de>, de>PRIo16de>, de>PRIo32de>, de>PRIo64de>

#define PRIo8     "hho"
#define PRIo16 "ho"
#define PRIo32 "lo"
#define PRIo64 "llo"

The macros each expand to a string literal suitable for use as an de>ode> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint8_tde>, de>uint16_tde>, de>uint32_tde>, or de>uint64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIoFAST8de>, de>PRIoFAST16de>, de>PRIoFAST32de>, de>PRIoFAST64de>

#define PRIoFAST8    "hho"
#define PRIoFAST16 "ho"
#define PRIoFAST32 "lo"
#define PRIoFAST64 "llo"

The macros each expand to a string literal suitable for use as an de>ode> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_fast8_tde>, de>uint_fast16_tde>, de>uint_fast32_tde>, or de>uint_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIoLEAST8de>, de>PRIoLEAST16de>, de>PRIoLEAST32de>, de>PRIoLEAST64de>

#define PRIoLEAST8   "hho"
#define PRIoLEAST16 "ho"
#define PRIoLEAST32 "lo"
#define PRIoLEAST64 "llo"

The macros each expand to a string literal suitable for use as an de>ode> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_least8_tde>, de>uint_least16_tde>, de>uint_least32_tde>, or de>uint_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIoMAXde>

#define PRIoMAX   "llo"

The macro expands to a string literal suitable for use as an de>ode> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uintmax_tde>. Note that the definition shown here is merely representative.

de>PRIoPTRde>

#define PRIoPTR   "llo"

The macro expands to a string literal suitable for use as an de>ode> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uintptr_tde>. Note that the definition shown here is merely representative.

de>PRIu8de>, de>PRIu16de>, de>PRIu32de>, de>PRIu64de>

#define PRIu8     "hhu"
#define PRIu16 "hu"
#define PRIu32 "lu"
#define PRIu64 "llu"

The macros each expand to a string literal suitable for use as a de>ude> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint8_tde>, de>uint16_tde>, de>uint32_tde>, or de>uint64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIuFAST8de>, de>PRIuFAST16de>, de>PRIuFAST32de>, de>PRIuFAST64de>

#define PRIuFAST8    "hhu"
#define PRIuFAST16 "hu"
#define PRIuFAST32 "lu"
#define PRIuFAST64 "llu"

The macros each expand to a string literal suitable for use as a de>ude> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_fast8_tde>, de>uint_fast16_tde>, de>uint_fast32_tde>, or de>uint_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIuLEAST8de>, de>PRIuLEAST16de>, de>PRIuLEAST32de>, de>PRIuLEAST64de>

#define PRIuLEAST8   "hhu"
#define PRIuLEAST16 "hu"
#define PRIuLEAST32 "lu"
#define PRIuLEAST64 "llu"

The macros each expand to a string literal suitable for use as a de>ude> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_least8_tde>, de>uint_least16_tde>, de>uint_least32_tde>, or de>uint_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIuMAXde>

#define PRIuMAX   "llu"

The macro expands to a string literal suitable for use as a de>ude> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uintmax_tde>. Note that the definition shown here is merely representative.

de>PRIuPTRde>

#define PRIuPTR   "llu"

The macro expands to a string literal suitable for use as a de>ude> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uintptr_tde>. Note that the definition shown here is merely representative.

de>PRIx8de>, de>PRIx16de>, de>PRIx32de>, de>PRIx64de>

#define PRIx8     "hhx"
#define PRIx16 "hx"
#define PRIx32 "lx"
#define PRIx64 "llx"

The macros each expand to a string literal suitable for use as an de>xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint8_tde>, de>uint16_tde>, de>uint32_tde>, or de>uint64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIxFAST8de>, de>PRIxFAST16de>, de>PRIxFAST32de>, de>PRIxFAST64de>

#define PRIxFAST8    "hhx"
#define PRIxFAST16 "hx"
#define PRIxFAST32 "lx"
#define PRIxFAST64 "llx"

The macros each expand to a string literal suitable for use as an de>xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_fast8_tde>, de>uint_fast16_tde>, de>uint_fast32_tde>, or de>uint_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIxLEAST8de>, de>PRIxLEAST16de>, de>PRIxLEAST32de>, de>PRIxLEAST64de>

#define PRIxLEAST8   "hhx"
#define PRIxLEAST16 "hx"
#define PRIxLEAST32 "lx"
#define PRIxLEAST64 "llx"

The macros each expand to a string literal suitable for use as an de>xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_least8_tde>, de>uint_least16_tde>, de>uint_least32_tde>, or de>uint_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIxMAXde>

#define PRIxMAX   "llx"

The macro expands to a string literal suitable for use as an de>xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uintmax_tde>. Note that the definition shown here is merely representative.

de>PRIxPTRde>

#define PRIxPTR   "llx"

The macro expands to a string literal suitable for use as an de>xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uintptr_tde>. Note that the definition shown here is merely representative.

de>PRIX8de>, de>PRIX16de>, de>PRIX32de>, de>PRIX64de>

#define PRIX8     "hhX"
#define PRIX16 "hX"
#define PRIX32 "lX"
#define PRIX64 "llX"

The macros each expand to a string literal suitable for use as an de>Xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint8_tde>, de>uint16_tde>, de>uint32_tde>, or de>uint64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIXFAST8de>, de>PRIXFAST16de>, de>PRIXFAST32de>, de>PRIXFAST64de>

#define PRIXFAST8    "hhX"
#define PRIXFAST16 "hX"
#define PRIXFAST32 "lX"
#define PRIXFAST64 "llX"

The macros each expand to a string literal suitable for use as an de>Xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_fast8_tde>, de>uint_fast16_tde>, de>uint_fast32_tde>, or de>uint_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIXLEAST8de>, de>PRIXLEAST16de>, de>PRIXLEAST32de>, de>PRIXLEAST64de>

#define PRIXLEAST8   "hhX"
#define PRIXLEAST16 "hX"
#define PRIXLEAST32 "lX"
#define PRIXLEAST64 "llX"

The macros each expand to a string literal suitable for use as an de>Xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_least8_tde>, de>uint_least16_tde>, de>uint_least32_tde>, or de>uint_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>PRIXMAXde>

#define PRIXMAX   "llX"

The macro expands to a string literal suitable for use as an de>Xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uintmax_tde>. Note that the definition shown here is merely representative.

de>PRIXPTRde>

#define PRIXPTR   "llX"

The macro expands to a string literal suitable for use as an de>Xde> print conversion specificier, plus any needed qualifiers, to convert values of the types de>uintptr_tde>. Note that the definition shown here is merely representative.

de>SCNd8de>, de>SCNd16de>, de>SCNd32de>, de>SCNd64de>

#define SCNd8     "hhd"
#define SCNd16 "hd"
#define SCNd32 "ld"
#define SCNd64 "lld"

The macros each expand to a string literal suitable for use as a de>dde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>int8_tde>, de>int16_tde>, de>int32_tde>, or de>int64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNdFAST8de>, de>SCNdFAST16de>, de>SCNdFAST32de>, de>SCNdFAST64de>

#define SCNdFAST8    "hhd"
#define SCNdFAST16 "hd"
#define SCNdFAST32 "ld"
#define SCNdFAST64 "lld"

The macros each expand to a string literal suitable for use as a de>dde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>int_fast8_tde>, de>int_fast16_tde>, de>int_fast32_tde>, or de>int_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNdLEAST8de>, de>SCNdLEAST16de>, de>SCNdLEAST32de>, de>SCNdLEAST64de>

#define SCNdLEAST8   "hhd"
#define SCNdLEAST16 "hd"
#define SCNdLEAST32 "ld"
#define SCNdLEAST64 "lld"

The macros each expand to a string literal suitable for use as a de>dde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>int_least8_tde>, de>int_least16_tde>, de>int_least32_tde>, or de>int_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNdMAXde>

#define SCNdMAX   "lld"

The macro expands to a string literal suitable for use as a de>dde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>intmax_tde>. Note that the definition shown here is merely representative.

de>SCNdPTRde>

#define SCNdPTR   "lld"

The macro expands to a string literal suitable for use as a de>dde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>intptr_tde>. Note that the definition shown here is merely representative.

de>SCNi8de>, de>SCNi16de>, de>SCNi32de>, de>SCNi64de>

#define SCNi8     "hhi"
#define SCNi16 "hi"
#define SCNi32 "li"
#define SCNi64 "lli"

The macros each expand to a string literal suitable for use as an de>ide> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>int8_tde>, de>int16_tde>, de>int32_tde>, or de>int64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNiFAST8de>, de>SCNiFAST16de>, de>SCNiFAST32de>, de>SCNiFAST64de>

#define SCNiFAST8    "hhi"
#define SCNiFAST16 "hi"
#define SCNiFAST32 "li"
#define SCNiFAST64 "lli"

The macros each expand to a string literal suitable for use as an de>ide> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>int_fast8_tde>, de>int_fast16_tde>, de>int_fast32_tde>, or de>int_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNiLEAST8de>, de>SCNiLEAST16de>, de>SCNiLEAST32de>, de>SCNiLEAST64de>

#define SCNiLEAST8   "hhi"
#define SCNiLEAST16 "hi"
#define SCNiLEAST32 "li"
#define SCNiLEAST64 "lli"

The macros each expand to a string literal suitable for use as an de>ide> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>int_least8_tde>, de>int_least16_tde>, de>int_least32_tde>, or de>int_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNiMAXde>

#define SCNiMAX   "lli"

The macro expands to a string literal suitable for use as an de>ide> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>intmax_tde>. Note that the definition shown here is merely representative.

de>SCNiPTRde>

#define SCNiPTR   "lli"

The macro expands to a string literal suitable for use as an de>ide> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>intptr_tde>. Note that the definition shown here is merely representative.

de>SCNo8de>, de>SCNo16de>, de>SCNo32de>, de>SCNo64de>

#define SCNo8     "hho"
#define SCNo16 "ho"
#define SCNo32 "lo"
#define SCNo64 "llo"

The macros each expand to a string literal suitable for use as an de>ode> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uint8_tde>, de>uint16_tde>, de>uint32_tde>, or de>uint64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNoFAST8de>, de>SCNoFAST16de>, de>SCNoFAST32de>, de>SCNoFAST64de>

#define SCNoFAST8    "hho"
#define SCNoFAST16 "ho"
#define SCNoFAST32 "lo"
#define SCNoFAST64 "llo"

The macros each expand to a string literal suitable for use as an de>ode> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_fast8_tde>, de>uint_fast16_tde>, de>uint_fast32_tde>, or de>uint_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNoLEAST8de>, de>SCNoLEAST16de>, de>SCNoLEAST32de>, de>SCNoLEAST64de>

#define SCNoLEAST8   "hho"
#define SCNoLEAST16 "ho"
#define SCNoLEAST32 "lo"
#define SCNoLEAST64 "llo"

The macros each expand to a string literal suitable for use as an de>ode> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_least8_tde>, de>uint_least16_tde>, de>uint_least32_tde>, or de>uint_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNoMAXde>

#define SCNoMAX   "llo"

The macro expands to a string literal suitable for use as an de>ode> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uintmax_tde>. Note that the definition shown here is merely representative.

de>SCNoPTRde>

#define SCNoPTR   "llo"

The macro expands to a string literal suitable for use as an de>ode> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uintptr_tde>. Note that the definition shown here is merely representative.

de>SCNu8de>, de>SCNu16de>, de>SCNu32de>, de>SCNu64de>

#define SCNu8     "hhu"
#define SCNu16 "hu"
#define SCNu32 "lu"
#define SCNu64 "llu"

The macros each expand to a string literal suitable for use as a de>ude> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uint8_tde>, de>uint16_tde>, de>uint32_tde>, or de>uint64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNuFAST8de>, de>SCNuFAST16de>, de>SCNuFAST32de>, de>SCNuFAST64de>

#define SCNuFAST8    "hhu"
#define SCNuFAST16 "hu"
#define SCNuFAST32 "lu"
#define SCNuFAST64 "llu"

The macros each expand to a string literal suitable for use as a de>ude> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_fast8_tde>, de>uint_fast16_tde>, de>uint_fast32_tde>, or de>uint_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNuLEAST8de>, de>SCNuLEAST16de>, de>SCNuLEAST32de>, de>SCNuLEAST64de>

#define SCNuLEAST8   "hhu"
#define SCNuLEAST16 "hu"
#define SCNuLEAST32 "lu"
#define SCNuLEAST64 "llu"

The macros each expand to a string literal suitable for use as a de>ude> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_least8_tde>, de>uint_least16_tde>, de>uint_least32_tde>, or de>uint_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNuMAXde>

#define SCNuMAX   "llu"

The macro expands to a string literal suitable for use as a de>ude> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uintmax_tde>. Note that the definition shown here is merely representative.

de>SCNuPTRde>

#define SCNuPTR   "llu"

The macro expands to a string literal suitable for use as a de>ude> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uintptr_tde>. Note that the definition shown here is merely representative.

de>SCNx8de>, de>SCNx16de>, de>SCNx32de>, de>SCNx64de>

#define SCNx8     "hhx"
#define SCNx16 "hx"
#define SCNx32 "lx"
#define SCNx64 "llx"

The macros each expand to a string literal suitable for use as an de>xde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uint8_tde>, de>uint16_tde>, de>uint32_tde>, or de>uint64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNxFAST8de>, de>SCNxFAST16de>, de>SCNxFAST32de>, de>SCNxFAST64de>

#define SCNxFAST8    "hhx"
#define SCNxFAST16 "hx"
#define SCNxFAST32 "lx"
#define SCNxFAST64 "llx"

The macros each expand to a string literal suitable for use as an de>xde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_fast8_tde>, de>uint_fast16_tde>, de>uint_fast32_tde>, or de>uint_fast64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNxLEAST8de>, de>SCNxLEAST16de>, de>SCNxLEAST32de>, de>SCNxLEAST64de>

#define SCNxLEAST8   "hhx"
#define SCNxLEAST16 "hx"
#define SCNxLEAST32 "lx"
#define SCNxLEAST64 "llx"

The macros each expand to a string literal suitable for use as an de>xde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uint_least8_tde>, de>uint_least16_tde>, de>uint_least32_tde>, or de>uint_least64_tde>, respectively. Note that the definitions shown here are merely representative.

de>SCNxMAXde>

#define SCNxMAX   "llx"

The macro expands to a string literal suitable for use as an de>xde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uintmax_tde>. Note that the definition shown here is merely representative.

de>SCNxPTRde>

#define SCNxPTR   "llx"

The macro expands to a string literal suitable for use as an de>xde> scan conversion specificier, plus any needed qualifiers, to convert values of the types de>uintptr_tde>. Note that the definition shown here is merely representative.

de>strtoimaxde>

intmax_t strtoimax(const char *restrict s, char **restrict endptr,
int base);

The function converts the initial characters of the string de>sde> to an equivalent value de>xde> of type intmax_t. If de>endptrde> is not a null pointer, it stores a pointer to the unconverted remainder of the string in de>*endptrde>. The function then returns de>xde>. de>strtoimaxde> converts strings exactly as does de>strtolde>.

If the string de>sde> does not match a valid pattern, the value stored in de>*endptrde> is de>sde>, and de>xde> is zero. If the equivalent value is too large to represent as type intmax_t, de>strtoimaxde> stores the value of de>ERANGEde> in de>errnode> and returns either de>INTMAX_MAXde>, if de>xde> is positive, or de>INTMAX_MINde>, if de>xde> is negative.

de>strtoumaxde>

uintmax_t strtoumax(const char *restrict s, char **restrict endptr,
int base);

The function converts the initial characters of the string de>sde> to an equivalent value de>xde> of type uintmax_t. If de>endptrde> is not a null pointer, it stores a pointer to the unconverted remainder of the string in de>*endptrde>. The function then returns de>xde>. de>strtoumaxde> converts strings exactly as does de>strtoulde>.

If the string de>sde> does not match a valid pattern, the value stored in de>*endptrde> is de>sde>, and de>xde> is zero. If the equivalent value is too large to represent as type uintmax_t, de>strtoumaxde> stores the value of de>ERANGEde> in de>errnode> and returns de>UINTMAX_MAXde>.

de>wcstoimaxde>

intmax_t wcstimax(const wchar_t *restrict s, wchar_t **restrict endptr,
int base);

The function converts the initial wide characters of the wide string de>sde> to an equivalent value de>xde> of type intmax_t. If de>endptrde> is not a null pointer, the function stores a pointer to the unconverted remainder of the wide string in de>*endptrde>. The function then returns de>xde>.

The initial wide characters of the wide string de>sde> must match the same pattern as recognized by the function de>strtolde>, with the same de>basede> argument, where each wide character de>wcde> is converted as if by calling de>wctob(wc))de>.

If the wide string de>sde> matches this pattern, de>wcstoimaxde> converts strings exactly as does de>strtolde>, with the same de>basede> argument, for the converted sequence. If the wide string de>sde> does not match a valid pattern, the value stored in de>*endptrde> is de>sde>, and de>xde> is zero. If the equivalent value is too large in magnitude to represent as type intmax_t, de>wcstoimaxde> stores the value of de>ERANGEde> in de>errnode> and returns either de>INTMAX_MAXde>, if de>xde> is positive, or de>INTMAX_MINde>, if de>xde> is negative.

de>wcstoumaxde>

uintmax_t wcstoumax(const wchar_t *restrict s,
wchar_t **restrict endptr, int base);

The function converts the initial wide characters of the wide string de>sde> to an equivalent value de>xde> of type uintmax_t. If de>endptrde> is not a null pointer, the function stores a pointer to the unconverted remainder of the wide string in de>*endptrde>. The function then returns de>xde>.

The initial wide characters of the wide string de>sde> must match the same pattern as recognized by the function de>strtolde>, with the same de>basede> argument, where each wide character de>wcde> is converted as if by calling de>wctob(wc))de>.

If the wide string de>sde> matches this pattern, de>wcstoumaxde> converts strings exactly as does de>strtolde>, with the same de>basede> argument, for the converted sequence. If the wide string de>sde> does not match a valid pattern, the value stored in de>*endptrde> is de>sde>, and de>xde> is zero. If the equivalent value is too large to represent as type uintmax_t, de>wcstoimaxde> stores the value of de>ERANGEde> in de>errnode> and returns de>UINTMAX_MAXde>.


See also the Table of Contents and the Index.

Copyright ? 1992-2006 by P.J. Plauger. All rights reserved.

  评论这张
 
阅读(12504)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018