前言
C/C++
作为一种底层语言,在使用时常常需要考虑适配性的问题。而这门语言也提供了相应的头文件与库函数,支持定长数据类型(如:uint8_t
)。
本文将介绍一下这类定长数据类型的声明定义,以及如何结合在输入输出中进行使用。
定义与声明
如果想要使用定长数据类型的话,C/C++
提供了stdint.h
头文件(点击查看库文件详情),里面包含了各种定长数据类型。包括常用的uint8_t
, uint16_t
, int32_t
等。
#include <stdio.h>
#include <stdint.h>
int main()
{
uint32_t a = 12;
uint16_t b = 1;
return 0;
}
输入输出
有一个关键的问题是,定长数据类型的输入和输出。普通的%d
,%u
等无法保证在不同平台上有相同的长度标准,所以使用普通的方法输出定长数据类型会使得定长数据类型的作用无效。
C/C++
提供了专门的格式化字符串,包含在头文件inttypes.h
中(点击查看库文件详情)。
值得注意的是,头文件inttypes.h
包含了stdint.h
。所以使用时只需要像下面这样包含inttypes.h
就足够了。
#include <stdio.h>
#include <inttypes.h>
int main (void) {
uint32_t a=1234;
uint16_t b=5678;
printf("%" PRIu32 "\n",a);
printf("%" PRIu16 "\n",b);
return 0;
}
参考链接
How do I print uint32_t and uint16_t variables’ value? - stackoverflow
C/C++ - 一般数据类型的长度 - 源1
C/C++ - 一般数据类型的长度 - 源2
C/C++ - 一般数据类型的长度 - 源3