C语言中的可移植类型:stdint.h和inttypes.h

    stdint.h和inttypes.h两个头文件是C99里新增加的,以确保C语言的类型在各系统中功能相同。

在stdint.h头文件中,C语言为现有类型创建了更多类型名。如:int32_t表示32位有符号整数类型。即,在32位int型系统中,int32_t相当于int型的别名;在16位int型,32位long型系统中,int32_t相当于long型的别名。这些类型别名是精确宽度整数类型。

另有一些类型名将保证所表示的类型一定是至少有指定宽度的最小整数类型,这些类型被称为最小宽度类型。如:int_least8_t是可容纳8位有符号整数值的类型中宽度最小的类型的一个别名。

上述均为从空间上来考虑,从时间上来考虑,C99和C11中还定义了一组是计算机达到最快的类型,即为最快最小宽度类型。如:int_faste8_t为系统中对8为有符号而言晕死最快的整数类型。

有时,需要获取系统的最大整数类型,故此,C99中定义了最大的由富豪整数类型intmax_t,可存储任何有效的有符号整数值。类似的,uintmax_t表示最大的无符号整数类型,其可能比long long和unsigned long类型更大。

C99和C11中除了提供可移植的类型外,还提供相应的输入输出。如:inttypes.h头文件中定义了PRId32字符串宏,表示打印32位有符号值得合适转换说明(如d和l)。

在包含有inttypes.h头文件的程序中,

int32_t a;

printf("a = %" PRId32 "\n", a);

printf()函数中,PRId32被定义在inttypes.h中的"d"替换,故该句等价于

printf("a = % " "d" " \n",a);

C语言中多个连续字符串组合成一个字符串,因此,该句又等价于

printf("a= %d\n", a);

关于stdint.h头文件的详细内容可参考:有关stdint.h 文件

关于inttypes.h头文件的详细内容可参考:C99标准里的inttypes.h头文件

猜你喜欢

转载自blog.csdn.net/fzk0813/article/details/86720950