Home C&C++函数库 c++ 语法 程序源码 Linux C库

<cinttypes>

头文件(C++11)   (inttypes.h)

C整数类型

头文件支持宽整型类型

包含这个头文件还会自动包含<cstdint>(它定义了宽整型类型)。

☞  宏



下面的宏扩展为字符串字面量 ,包括printfscanf适配特定的宽整型类型:

说明 例子
PRIXMAX Printf对于intmax_t 对于intmax_t值,PRIiMAX相当于i(在“%i”中)
PRIXN Printf对于intN_t 对于int16_t值,PRId16相当于d(在“%d”中)
PRIXLEASTN Printf对于int_leastN_t 对于uint32_t值,PRIuLEAST32 相当于u(在“%u”中)
PRIXFASTN Printf对于int_fastN_t 对于uint8_t, PRIxFAST8相当于x(“%x”)
PRIXPTR Printf对于intptr_t 对于uintptr_t, PRIuPTR 相当于u(“%u”)
SCNXMAX scanf对于intmax_t 对于intmax_t值,SCNiMAX相当于i(在“%i”中)
SCNXN scanf对于intN_t 对于int16_t值,SCNd16 相当于d(在“%d”中)
SCNXLEASTN scanf对于int_leastN_t 对于uint32_t值,SCNuLEAST32 相当于u(在“%u”中)
SCNXFASTN scanf对于int_fastN_t 对于uint8_t,SCNxFAST8 相当于x(“%x”)
SCNXPTR scanf对于intptr_t 对于uintptr_t, SCNuPTR相当于u(“%u”)
备注:
* 说明符假定类型i和d是signed的,o、u、x和x是unsigned的。

☞  函数



该头文件还声明了以下函数,它们将<cstdlib> 和<cwchar>中的函数用于intmax_t:

函数 说明
imaxabs 等价于abs forintmax_t:
intmax_t imaxabs (intmax_t n);
imaxdiv 相当于div for intmax_t:
imaxdiv_t imaxdiv (intmax_t number, intmax_t denom);
strtoimax 等价于strtol for intmax_t:
intmax_t strtoimax (const char* str, char** endptr, int base);
strtoumax 等价于div for uintmax_t:
uintmax_t strtoumax (const char* str, char** endptr, int base);
wcstoimax 相当于wcstol for intmax_t:
intmax_t wcstoimax (const wchar_t* wcs, wchar_t** endptr, int base);
wcstoumax 等价于wcstoul for uintmax_t:
uintmax_t wcstoumax (const wchar_t* wcs, wchar_t** endptr, int base);


在c++中,包含这个头文件还提供了intmax_t的abs和div重载(与上面的函数等价),除非intmax_t是基本类型的别名。

☞  类型



类型 说明
imaxdiv_t imaxdiv返回的类型,它是intmax_tdiv_t等效值。

☣  示例



/* example of <inttypes.h> */
#include <stdio.h>      /* printf, scanf, fgets, stdin, NULL */
#include <stdint.h>     /* intmax_t */
#include <inttypes.h>   /* strtoimax, PRIdMAX, SCNdMAX */

int main ()
{
  char buffer[80];
  intmax_t foo,bar;

  printf ("Please, enter a number: ");
  fgets (buffer,80,stdin);
  foo = strtoimax (buffer,NULL,10);

  printf ("Thanks for entering %" PRIdMAX ".\n", foo);

  printf ("Please, enter another number: ");
  scanf ("%" SCNdMAX,&bar);

  printf ("%" PRIdMAX " by %" PRIdMAX " is %" PRIdMAX, foo, bar, foo*bar);

  return 0;
}

输出:
Please, enter a number: 10
Thanks for entering 10.
Please, enter another number: 20
10 by 20 is 200


联系我们 免责声明 关于CandCplus 网站地图