【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> 可以让代码在不同平台间更可靠地保持行为一致,因为可以根据需要选择恰当的整数类型。

相关推荐
octopus_c10 小时前
C++ 运算符重载详解 && 日期类的实现
开发语言·c++
Eiceblue10 小时前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
j7~10 小时前
【C++ 面试笔记】(篇二):类与数据抽象 & STL 容器与算法
开发语言·c++·面试·stl容器和算法·类和数据抽象
Fuyo_111910 小时前
深入解析 C++ unordered_set 与 unordered_map 的核心特性与性能实战
开发语言·c++
ShineWinsu11 小时前
对于Qt:QPushButton常见属性的解析
开发语言·c++·qt·api·gui·按钮·qpushbutton
外贸GEO优化11 小时前
外贸独立站的可抓取性:JS 渲染、懒加载与无限滚动到底影响什么
开发语言·javascript·ecmascript
飞浪纪元[FWC–FE]11 小时前
Qt 工程创建与 CMake / qmake 构建规范
开发语言·数据库·qt
后台模板学习11 小时前
Go Web开发中任务调度框架的源码解析与高可用实现方案
开发语言·后端·golang
xiaoye-duck11 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(上):初始化和全量响应
开发语言·网络·c++·语言模型