【ARM 嵌入式 C 头文件系列 22 -- 头文件 stdint.h 介绍】

请阅读【嵌入式开发学习必备专栏 】


文章目录

C 头文件 stdint.h

在 C 语言中,头文件 <stdint.h> 是 C99 标准的一部分,旨在提供一组明确的整数类型,其大小不受特定系统架构(32位、64位等)影响。这允许程序员编写更可移植的代码,因为他们可以明确指定所需的整数大小和有符号性。

这个头文件定义了以下类型:

定长整数类型

  • int8_t, int16_t, int32_t, int64_t: 分别代表至少8、16、32、64位的有符号整数。
  • uint8_t, uint16_t, uint32_t, uint64_t: 分别代表至少8、16、32、64位的无符号整数。

最小宽度整数类型

  • int_least8_t, int_least16_t, int_least32_t, int_least64_t: 分别代表至少8、16、32、64位的最小有符号整数。
  • uint_least8_t, uint_least16_t, uint_least32_t, uint_least64_t: 分别代表至少8、16、32、64位的最小无符号整数。

最快最小宽度整数类型

  • int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t: 选择最快的类型,该类型至少能够存储8、16、32、64位的有符号整数。
  • uint_fast8_t, uint_fast16_t, uint_fast32_t, uint_fast64_t: 选择最快的类型,该类型至少能够存储8、16、32、64位的无符号整数。

整数指针类型

  • intptr_t: 一个有符号整数类型,其大小足以存储指针。
  • uintptr_t: 一个无符号整数类型,其大小足以存储指针。

最大整数类型

  • intmax_t: 能够表示任何有符号整数的最大类型。
  • uintmax_t: 能够表示任何无符号整数的最大类型。

此外,<stdint.h> 还定义了一组宏,这些宏用于指定整数类型的常量。例如:

  • INT8_MAX, INT16_MAX, INT32_MAX, INT64_MAX: 分别代表 int8_t, int16_t, int32_t, int64_t 能够存储的最大值。
  • UINT8_MAX, UINT16_MAX, UINT32_MAX, UINT64_MAX: 分别代表 uint8_t, uint16_t, uint32_t, uint64_t 能够存储的最大值。
  • INT8_MIN, INT16_MIN, INT32_MIN, INT64_MIN: 分别代表 int8_t, int16_t, int32_t, int64_t 能够存储的最小值(负值)。
  • INT_LEAST8_MIN, INT_LEAST16_MIN, INT_LEAST32_MIN, INT_LEAST64_MIN: 分别代表 int_least8_t, int_least16_t, int_least32_t, int_least64_t 能夜存储的最小值。
  • INT_LEAST8_MAX, INT_LEAST16_MAX, INT_LEAST32_MAX, INT_LEAST64_MAX: 分别代表 int_least8_t, int_least16_t, int_least32_t, int_least64_t 能够存储的最大值。
  • INT_FAST8_MIN, INT_FAST16_MIN, INT_FAST32_MIN, INT_FAST64_MIN: 以及相应的最大值宏。

使用 <stdint.h> 可以让代码在不同平台间更可靠地保持行为一致,因为可以根据需要选择恰当的整数类型。

相关推荐
草莓熊Lotso1 小时前
【C++】--函数参数传递:传值与传引用的深度解析
c语言·开发语言·c++·其他·算法
Ice__Cai1 小时前
Flask 路由详解:构建灵活的 URL 映射系统
开发语言·python·flask
l1t1 小时前
分析xml标签属性和压缩级别对xlsx文件读取解析的影响
xml·开发语言·python·sql·duckdb
qq_411262422 小时前
为什么会“偶发 539/500 与建连失败”
服务器·c语言·网络·智能路由器
Jenkinscao2 小时前
我从零开始学习C语言(13)- 循环语句 PART2
c语言·开发语言·学习
王伯爵2 小时前
go语言中的select的用法和使用场景
开发语言·数据库·golang
Chandler_Song2 小时前
【Python代码】谷歌专利CSV处理函数
开发语言·python·pandas
白书宇2 小时前
12.从零开始写LINUX内核--控制台初始化
linux·c语言·驱动开发·嵌入式硬件·microsoft·iot
我是一只菜菜2 小时前
中国大学MOOC--C语言第十一周结构类型
c语言·开发语言
源代码•宸4 小时前
网络流量分析——基础知识(二)(Tcpdump 基础知识)
运维·开发语言·网络·c++·经验分享·tcpdump