详解C语言中的int8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、int64_t、uint64_t

2023年8月8日,周二上午


目录


为什么会产生int8_t、uint8_t等这类数据类型

根本原因在于,C 语言标准只是规定了各个基本类型的最小字节长度,但并没有指定它们的确切字节长度:

  • char 类型: char 类型的最小大小为 1 字节,用来存储字符的基本类型。

  • short 类型: short 类型的最小大小为 2 字节,用来存储短整数的基本类型。

  • int 类型: int 类型的最小大小为 2 字节,用来存储整数的基本类型。

  • long 类型: long 类型的最小大小为 4 字节,用来存储长整数的基本类型。

  • long long 类型: long long 类型的最小大小为 8 字节,用来存储超长整数的基本类型。

比如,

在64位Windows上运行C语言的sizeof(long)得到的是4

在64位Linux上运行C语言的sizeof(long)得到的是8

虽然不一样,但它们都不会小于4字节

再比如,

在某些平台上运行C语言的sizeof(int)得到的是2

在64位和32位Windows上运行C语言的sizeof(int)得到的是4

虽然不一样,但它们都不会小于2字节

总而言之,C语言现有的基本数据类型,不能满足跨平台的需求。

因为C语言现有的基本数据类型在不同的平台有不同的字节长度,当换一个平台时可能会在数据大小方面出现问题。

int8_t、uint8_t等这类数据类型有什么用

Integer type with a width of exactly 8, 16, 32, or 64 bits.

具有精确位宽的8位、16位、32位或64位整型

也就是说,无论在什么平台,无论用什么编译器,只要是遵守C语言标准的,

int8_t和uint8_t一定是8位的整型,

int16_t和uint16_t一定是16位的整型,

int32_t和uint32_t一定是32位的整型,

int64_t和uint64_t一定是64位的整型

头文件

在C语言中,它们定义在stdint.h

在C++中,它们定义在cstdint

int8_t、uint8_t等这类数据类型是怎么实现的

我研究了几个小时也没能彻底弄懂,感觉没那么简单,还是挺复杂的,

其实也不用研究这些,知道怎么用、为什么要用就可以了,

不建议去研究这个....

相关推荐
qq_406981037 分钟前
c++拷贝构造函数
开发语言·c++
爱喝雪碧的可乐32 分钟前
MATLAB
开发语言·算法·matlab
HUANGZHENXUAN1232 小时前
最大子矩阵和:从 O(n⁴) 到 O(n³) 的列压缩 + Kadane
c语言·前端
H.莓飛2 小时前
【C++】【STL】vector_OJ题
linux·服务器·开发语言·数据结构·c++·visual studio
j7~4 小时前
【C++ 八股文】(篇四)C++11 新特性
开发语言·c++·面试·c++11·八股文
eggwyw4 小时前
C++中大括号的用法合集
开发语言·c++
xiaoye-duck4 小时前
《C++ 项目:手写大模型接入 SDK》本地 Ollama 部署与适配
开发语言·网络·c++·语言模型
§ꦿCFོ༉4 小时前
嵌入式八股文—C语言入门学习(二)
c语言·学习·嵌入式·编程语言
联犀4 小时前
联犀 Go SIMD 实战:视频转码从 16.5ms 到 5.46ms
开发语言·golang·音视频
octopus_c4 小时前
STL 之 string:auto 与范围 for、常用接口、模拟实现与深浅拷贝
开发语言·c++·算法