当前位置:嗨网首页>书籍在线阅读

59-参考资料VI_扩展的整数类型

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

B.6 参考资料VI:扩展的整数类型

第3章介绍过,C99的 inttypes.h 头文件为不同的整数类型提供一套系统的别名。这些名称与标准名称相比,能更清楚地描述类型的性质。例如, int 类型可能是 16 位、 32 位或 64 位,但是 int32_t 类型一定是 32 位。

更精确地说, inttypes.h 头文件定义的一些宏可用于 scanf()printf() 函数中读写这些类型的整数。 inttypes.h 头文件包含的 stdlib.h 头文件提供实际的类型定义。格式化宏可以与其他字符串拼接起来形成合适格式化的字符串。

该头文件中的类型都使用 typedef 定义。例如, 32 位系统的 int 可能使用这样的定义:

typedef int int32_t;

#define 指令定义转换说明。例如,使用之前定义的 int32_t 的系统可以这样定义:

#define PRId32 "d" // 输出说明符
#define SCNd32 "d" // 输入说明符

使用这些定义,可以声明扩展的整型变量、输入一个值和显示该值:

int32_t cd_sales; // 32位整数类型
scanf("%" SCNd32, &cd_sales);
printf("CD sales = %10" PRId32 " units\n", cd_sales);

如果需要,可以把字符串拼接起得到最终的格式字符串。因此,上面的代码可以这样写:

int cd_sales; // 32位整数类型
scanf("%d", &cd_sales);
printf("CD sales = %10d units\n", cd_sales);

如果把原始代码移植到16位 int 的系统中,该系统可能把 int32_t 定义为 long ,把 PRId32 定义为 "ld" 。但是,仍可以使用相同的代码,只要知道系统使用的是32位整型即可。

该参考资料的其余部分列出了扩展类型、转换说明以及表示类型限制的宏。