C语言 —— int32_t uint32_t 及size_t

C语言 —— int32_t uint32_t 及size_t文章目录使用 int64 t 形式代替基本类型使用原因 stdint h 源码 int32 t 和 uint32 t 的区别 size t 在不同机器中定义不同 参考文档使用 int64 t 形式代替基本类型我们都知道 C 语言的基本类型就 char short int 等 但是我们在看其他源码时经常碰到 int32 t int8 t 这种形式的定义 他们是什么呢 其实他们就是基本类型的 typedef 重定义 也就是不同平台下 使用以下名称可以保证固定长度 1 字节 int8 t char2 字节 int1

int32_t和int区别

使用原因

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

stdint.h源码

/* There is some amount of overlap with 
   
     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是无符号数

在不同机器中定义不同:

使用 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源码

size_t 的声明是实现相关的。它出现在一个或多个标准头文件中,比如stdio.h 和stblib.h,典型的定义如下: #ifndef __SIZE_T #define __SIZE_T typedef unsigned int size_t; #endif 

参考文档

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219927.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午9:34
下一篇 2026年3月17日 下午9:34


相关推荐

  • 递归函数java_java 递归函数

    递归函数java_java 递归函数一 递归函数 通俗的说就是函数本身自己调用自己 如 n n n 1 你定义函数 f n nf n 1 而 f n 1 又是这个定义的函数 这就是递归二 为什么要用递归 递归的目的是简化程序设计 使程序易读三 递归的弊端 尽管非递归函数效率高 但较难编程 可读性较差 递归函数的缺点是添加 了系统开销 也就是说 每递归一次 栈内存就多占用一截四 递归的条件 需有完毕任务的语句 需满足递归的要求

    2026年3月17日
    2
  • .py和.ipynb的小知识

    .py和.ipynb的小知识目录1.相同点2.区别3.转换4.类比1.相同点用Python语言编写的源代码文件,其文件后缀是“.py”或“.ipynb”。用Python语言编写的源代码文件,其文件后缀是“.py”或“.ipynb”。2.区别.py:".py"文件是标准的Python源代码文件,通常情况下,使用“.py”的python源代码文件。可以用Spyder编辑并运行.py文件。也可…

    2025年8月10日
    5
  • DHCP Option 60 的理解

    DHCP Option 60 的理解

    2021年11月14日
    47
  • angularjs输入验证[通俗易懂]

    angularjs输入验证[通俗易懂]转载自:http://www.tuicool.com/articles/2Qbiqi(译)AngularJS中使用的表单验证-ZackYang时间 2013-11-1514:22:00  博客园-原创精华区原文  http://www.cnblogs.com/woshinidezhu/p/Form-validation-with-AngularJS.html主题 

    2022年7月25日
    12
  • Robo 3T安装及使用

    Robo 3T安装及使用Robo3T 是一款叫 mongodb 可视化工具 是一个免费版本 还有个付费版本叫 Studio3T 下载地址 https robomongo org download 选择适合你的 我选择 exe 下载好后解压 创建快捷键 打开窗口再 ctrl N 快捷键打开连接窗口 点击 connect 连接连接成功 会显示 admin local config test 四个数据库 你之前创建的一般保存在 test 设置时间显示在未设置前数据内的时间数都比当前时间少 8 小时 比如 2019 2 2715

    2025年10月17日
    5
  • 用计算机亩换算成平方,亩平米换算(平方米换算亩计算器)[通俗易懂]

    1平方米(㎡)=0.0015亩1亩=666.6666667平方米(㎡)平方米(㎡,英文:.方英里=10.763910417平方英尺=0.0015亩单位换算就是把平方米换算成平方分米、平方厘.使用国家规定的换算公式来进行换算。基本单位数量换算(按使用频率排序)。1亩=666.67平方米100平方米=0.15亩——就是农民朋友口语说的一分半地。1000平方米=1..1公顷=100公亩=10000平方…

    2022年4月9日
    434

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号