Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >c++ uint32_t_int32和uint32

c++ uint32_t_int32和uint32

作者头像
全栈程序员站长
发布于 2022-11-06 04:32:24
发布于 2022-11-06 04:32:24
3K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

文章目录

int32_t和int区别

我们都知道,C语言的基本类型就char, short, int 等。但是我们在看其他源码时经常碰到int32_t, int8_t这种形式的定义,他们是什么呢。其实他们就是基本类型的typedef重定义。 也就是不同平台下,使用以下名称可以保证固定长度。 1字节 int8_t —— char 2字节 int16_t —— short 4字节 int32_t —— int 8字节 int64_t —— long long

使用原因

那么为何要用重定义来代替基本类型呢? 有些数据类型的确切字节数依赖于程序是如何被编译的。 比如数据类型 long —般在 32 位程 序中为4字节 ,在 64 位程序中则为8字节也就是说不同编译器下long的大小可能不同。

为了避免由于依赖“典型”大小和不同编译器设置带来的奇怪 行为, ISO C99 引人了一类数据类型 , 其数据大小是固定的 ,不随编译器和机器设置而变化。其中就有数据类型比如int32_t 和 int64_t, 它们分别为 4 个字节和 8 个字节。使用确定大小的整数类型是我们准确控制数据表示的最佳途径。

stdint.h源码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* There is some amount of overlap with <sys/types.h> as known by inet code */
#ifndef __int8_t_defined
# define __int8_t_defined
typedef signed char                int8_t;
typedef short int                int16_t;
typedef int                        int32_t;
# if __WORDSIZE == 64
typedef long int                int64_t;
# else
__extension__
typedef long long int                int64_t;
# endif
#endif

可以看到,头文件stdint.h, 中long类型在把不同机器下被赋予不同的长度以保证,不同机器下int64_t的大小相同。

int32_t和uint32_t的区别

一个是有符号一个无符号,也就是一个可以有负数,而一个没负数,可取的正数范围更大。

size_t

size_t主要用于计数,他就是一个unsinged int的重定义. 如sizeof函数返回值类型即为size_t。在不同位的机器中所占的位数也不同,size_t是无符号数

在不同机器中定义不同:

在32位机器中定义为:typedef unsigned int size_t; (4个字节) 在64位机器中定义为:typedef unsigned long size_t;(8个字节)

使用 size_t 来代替 int 或 unsigned 可以保证在同一个平台中,始终得到得到一个数据类型或变量的字节大小,保证了程序对该数据类型或变量的统计方式始终一致,不会因为平台的改变而出现错误

他的目的和int64_t一样,也是为了平台一致性,他可以接住任何数组的index,在不同平台上size_t的定义也不同

size_t is a type that can hold any array index.

Depending on the implementation, it can be any of:

unsigned char

unsigned short

unsigned int

unsigned long

unsigned long long

stdint.h源码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
size_t 的声明是实现相关的。它出现在一个或多个标准头文件中,比如stdio.h 和stblib.h,典型的定义如下:


#ifndef __SIZE_T


#define __SIZE_T


typedef unsigned int size_t;


#endif

参考文档

https://blog.csdn.net/yz930618/article/details/84785970 https://blog.csdn.net/weixin_32780623/article/details/112583862 https://blog.csdn.net/qq_30866297/article/details/51465473?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_antiscanv2&utm_relevant_index=1 https://is-cloud.blog.csdn.net/article/details/106131564?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_antiscanv2&utm_relevant_index=2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月20日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【☠️️社死现场の老板来了☠️️】小伙,搞C语言嵌入式开发这么久了,还不知道u8、u16、u32、s8、s16、s32是什么意思啊?
糖糖小伙,你搞C语言嵌入式开发这么久了,我来考考你u8、u16、u32、s8、s16、s32是什么意思啊?你要是回答的让我满意了,给你升职加薪,从此走上人生巅峰呦~
全栈程序员站长
2022/11/03
4.8K0
【☠️️社死现场の老板来了☠️️】小伙,搞C语言嵌入式开发这么久了,还不知道u8、u16、u32、s8、s16、s32是什么意思啊?
uint16_t转换成char_16bit转8bit
简单来说,uint8_t / uint16_t / uint32_t /uint64_t这些数据类型都只是别名而来,具体如下:
全栈程序员站长
2022/10/04
1.1K0
uint16_t转换成char_16bit转8bit
【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量和堆栈
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第9章   STM32H7重要知识点数据类型,变量和堆栈 本章教
Simon223
2019/05/07
9130
【STM32H7教程】第9章   STM32H7重要知识点数据类型,变量和堆栈
关于uint8_t、uint_least8_t、uiuint_fast8_t等说明
版权声明:本文为博主原创文章,欢迎交流学习 https://blog.csdn.net/u012081284/article/details/83011982
大菊观
2019/07/02
1.9K0
unknown type name 'uint32_t'
在C或C++编程中,我们经常会遇到各种错误和警告信息。其中,一个常见的错误提示信息是:"unknown type name 'uint32_t'"。对于初学者来说,这可能是一个困扰的问题。本篇文章将向您解释这个错误的原因以及如何解决它。
大盘鸡拌面
2023/11/10
2K0
农民工学CSAPP题目解析-前篇题目解答以及答疑总结
特别鸣谢:木芯工作室 孔子学鼓琴师襄子,十日不进。师襄子曰:“可以益矣。”孔子曰:“丘已习其曲矣,未得其数也。”有间,曰:“已习其数,可以益矣。”孔子曰:“丘未得其志也。”有间,曰:“已习其志,可以益矣。”孔子曰:“丘未得其为人也。”有间,有所穆然深思焉,有所怡然高望而远志焉。曰:“丘得其为人,黯然而黑,几然而长,眼如望羊,如王四国,非文王其谁能为此也!”师襄子辟席再拜,曰:“师盖云文王操也。”
20岁爱吃必胜客
2022/11/13
2980
农民工学CSAPP题目解析-前篇题目解答以及答疑总结
【C语言】深入探讨 C 语言 `int` 类型大小及其跨平台影响
C 语言作为一种通用编程语言,其数据类型的大小由多种因素共同决定,而 int 类型作为最常用的整数类型之一,其字节数(大小)往往备受关注。本文将系统性地探讨 int 类型字节数的相关知识,从基础概念到实际应用,深入剖析影响因素和实现机制。
LuckiBit
2024/12/27
2800
【C语言】深入探讨 C 语言 `int` 类型大小及其跨平台影响
浅析C语言之uint8_t / uint16_t / uint32_t /uint64_t[通俗易懂]
在C语言中有6种基本数据类型:short、int、long、float、double、char
全栈程序员站长
2022/10/04
5.3K0
stm32中u8,u16,u32的理解_常用stm32是什么型号
http://www.51hei.com/bbs/dpj-27167-1.html
全栈程序员站长
2022/09/27
1.1K0
ESP32DEVKIT V1引脚(刨根问底版)
  stdint.h中定义了一些整数类型,规则如下(其中N可以为8,16,32,64)
云深无际
2020/12/15
1.5K0
ESP32DEVKIT V1引脚(刨根问底版)
CommonAPI C++(fidl)介绍
通用API运行时是从其开始所有类加载的基类。通用API运行时访问配置文件,以确定应加载哪个特定的中间件运行时库。中间件库是静态链接的,或者是作为共享库(文件扩展名.so)提供的,因此可用动态加载它们。
李小白是一只喵
2021/12/08
3.3K0
CommonAPI C++(fidl)介绍
int8与int16_将int型转为char型
工作中经常碰到int8_t、int16_t、int32_t、int64_t、uint8_t、size_t、ssize_t等数据类型,所以有必要对此进行梳理。
全栈程序员站长
2022/09/21
2K0
程序员C语言快速上手——基础篇(三)
上一节已经讲过,由于C语言中,整型的实际长度和范围不固定的问题,会导致C语言存跨平台移植的兼容问题,因此,C99标准中引入了stdint.h头文件,有效的解决了该问题。
arcticfox
2019/06/26
1.2K0
程序员C语言快速上手——基础篇(三)
C语言中u8 u16 u32含义,有关stm32的问题,程序里面的u8、u16这些是什么意思啊「建议收藏」
u8是unsigned char,u16是unsigned short,u32是unsigned long。
全栈程序员站长
2022/11/08
4.5K0
C/C++中有关字长与平台无关的整数类型
在C/C++中,整型的长度跟编译器相关,编译器的实现取决于CPU. 比如TC++是DOS16下的应用程序,DOS16是16位的操作系统,所以TC++中sizeof(int)==16;同理win32中sizeof(int)==32.
一见
2018/08/07
8970
uint32 t java_数据类型 — uint32_t 类型「建议收藏」
unsigned char, unsigned int, uint32_t, size_t, uint64_t, unsigned long int,
全栈程序员站长
2022/10/04
1.5K0
C++内置宏定义
标准内置宏定义是由相关的语言标准定义的,因此对于实现了这些语言标准的编译器来说都是可使用的。
hotarugali
2022/03/08
2.1K0
u12a u12s_utf8mb3
size_t是C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。size_t的真实类型与操作系统有关。size_t在32位架构上是4字节,在64位架构上是8字节,在不同架构上进行编译时需要注意这个问题。而int在不同架构下都是4字节,与size_t不同;且int为带符号数,size_t为无符号数。
全栈程序员站长
2022/11/04
5350
u12a u12s_utf8mb3
32位int取值范围_正则表达式判断是否是int32
在做游戏的开发中,由于游戏运行的时间已经很长,数据量非常大,在内网测试,怎么测都没有问题,可是到外网就是时不时的挂了,后来打log才看出问题。是我的int类型范围设置小聊,数据较到,应该用__int64,我却用int32,超出范围。。。。
全栈程序员站长
2022/11/05
9470
【C++】size_t全面解析与深入拓展
size_t 是一种无符号整数类型,其主要用途是表示对象大小(比如内存大小、数组索引等),它在C++标准库中被广泛使用,比如sizeof返回值、STL容器的.size()方法、动态内存分配函数的参数等等。
CSDN-Z
2025/01/24
3380
【C++】size_t全面解析与深入拓展
推荐阅读
相关推荐
【☠️️社死现场の老板来了☠️️】小伙,搞C语言嵌入式开发这么久了,还不知道u8、u16、u32、s8、s16、s32是什么意思啊?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验