数据类型 -- uint32_t 类型

2023-11-15

        整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。

        无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。

        由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。

数据类型 -- uint32_t 类型

1>. 在写程序时注意"无符号类型"的使用, 各种类型边界值的情况.
如:
a> 当某个数据不可能为负数时我们一定要考虑用以下类型:
unsigned char, unsigned int, uint32_t, size_t, uint64_t, unsigned long int,
b> 当有些数据你不知道是正负时一定不要用"a>"中的类型, 不然他永远也不可能为负.
c> 数据的边界值要多注意, 如:

uint32_t    a, b, c;
uint64_t    m;
m = a * b + c;

在该运算中可能出现错误, "a*b"的类型可能超过uint32_t的最大值,这时一定不要忘了类型转换.

m = ((uint64_t)a) * b + c;

2>. 在适当的时候要会自我定义数据类型.
        我们都知道linux C开发中的常见扩展数据类型的定义有:uint8_t, uint16_t, uint32_t, uint64_t, size_t, ssize_t, off_t .... 他之所以要自己定义出数据类型是有道理的, 如: typdef unsigned int uint32_t; 表示uint32_t为32位无符号类型数据, 其实size_t也是32位无符号数据类型, 为什么不直接写"unsigned int"呢?
        为了程序的可扩展性, 假如将来我们需要的数据大小变成了64bit时,我们只需要将typedef long long size_t就可以了, 不然我们可要修改好多好多的地方了. 
这种设计我们同样可以应用到自己的开发中来,当自己设计一个int类型保存某种数据时,但你又没把握将来是不是要用long int时你可以引用一个自己定义的数据类型的啊!

stdint.h
-----------------------------
typedef unsigned int   uint32_t;

uint32_t.c
-----------------------------
#include <stdio.h>
#if 0      
#include <stdint.h>    // uint32_t
#endif     

typedef unsigned int       uint32_t;
typedef unsigned long long uint64_t;

int main()
{
uint32_t a;
a = 12;
printf("a = %x\n", a);
printf("sizeof(a) = %d\n", sizeof(a));

uint64_t b;
b = 12;
printf("b = %x\n", b);
printf("sizeof(b) = %d\n", sizeof(b));
}  

a = c
sizeof(a) = 4
b = c
sizeof(b) = 8


转自:数据类型 -- uint32_t 类型 - 功夫 熊猫 - 博客园 (cnblogs.com)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据类型 -- uint32_t 类型 的相关文章

随机推荐

  • 谁有用vue.js写的前端模板页面??? 急需!!!

    谁有用vue js写的前端模板页面 急需
  • Ubuntu切换root用户

    Ubuntu下root用户的默认密码 Ubuntu下root的默认密码是随机的 每次开机都会有一个新的密码 可以在中断输入命令 sudo passwd 然后输入当前用户的密码 按下回车 终端会提示输入新的密码并确认 此时的密码就是root新
  • Node.js 学习系列(五)—— 文件系统

    Node js 提供一组类似 UNIX POSIX 标准的文件操作API Node 导入文件系统模块 fs 语法如下所示 var fs require fs 异步和同步 Node js 文件系统 fs 模块 模块中的方法均有异步和同步版本
  • 如何使用SWC,如何发布,打包SWC

    SWC的使用方法 1 如果是FLEX的话就比较简单 直接在library中加入即可 2 是Flash的情况下 目前只有CS4可以直接导入 方法是 file gt gt publish settings gt gt flash gt gt s
  • 从零开始的Python编程

    目录 1 输出函数print 2 转义字符 3 Python中的标识符和保留字 4 变量的定义和使用 5 Python中常见的数据类型 6 数据类型转换 7 Python中的注释 8 input函数的使用 9 运算符 10 对象的布尔值 1
  • SQL优化 ----锁机制

    锁机制 解决因资源共享 而造成的并发问题 示例 当仓库中最后一件衣服时 A这时候下单 随后B也同一时间下单 这时候就会出现问题 到底这最后一件衣服卖给了谁 所以就要通过锁来解决这种问题 衣服 A来的时候加锁 gt 然后A就可以下单 付款 打
  • C++的复制构造函数三种用法

    前言 如果真的想明白 为什么你写的函数的返回值是对象时 有的时候调用了复制构造函数 而有的时候 没有调用复制构造函数 需要明白一件事 函数的返回值是对象时 什么情况下 函数的返回是return by value 即生成了临时对象 这两个问题
  • 【Kubernetes资源篇】Service四层代理入门实战详解

    文章目录 一 Service四层代理概念 原理 1 Service四层代理概念 2 Service工作原理 3 Service原理解读 4 Service四种类型 二 Service四层代理三种类型案例 1 创建ClusterIP类型Ser
  • 线性表 :顺序表(ArrayList) 和 单链表(LinkedList) 详解

    线性表 1 顺序表 2 单链表 单向 不带头 非循环链表 3 顺序表和链表的区别 面试 线性表 List 是n个具有 相同特性 的数据元素的 有限序列 线性表是一种在实际中广泛使用的数据结构 常见的线性表 顺序表 链表 栈 队列 字符串 线
  • mac系统渗透测试小技巧-将命令行工具能够tab补全

    在kali中各种工具都能补全 但在mac中我们有些工具是需要自己下载回来的 每次使用工具都需要进入目录再打开命令行 这样会影响我们渗透测试的速度 说起来就是懒 懒人自有懒方法 其实很简单 我们只需要添加一个软连接到 usr local bi
  • 人工智能学习线路图

    人工智能学习线路图 Python教程 Python 教程 Python 简介 Python 环境搭建 Python 中文编码 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 Python 循环语
  • SpringCloud Gateway 在微服务架构下的最佳实践

    前言 本文整理自云原生技术实践营广州站 Meetup 的分享 其中的经验来自于我们团队开发的阿里云 CSB 2 0 这款产品 其基于开源 SpringCloud Gateway 开发 在完全兼容开源用法的前提下 做了诸多企业级的改造 涉及功
  • 从信号处理认识傅里叶变换

    前言 在表示和分析线性时不变系统时 我们的基本方法是将系统输入分解成基本信号的线性组合 其响应是基本输入响应的相同线性组合 卷积和和卷积积分源于我们将输入信号分解成基本信号的一种特定选择 特别是延迟的单位脉冲 这种选择的优点在于 对于线性时
  • 计算机中的换行符、回车符、\n、\r、\n\r 怎么区分

    n是换行 英文是New line r是回车 英文是Carriage return r 是回车 前者使光标到行首 carriage return n 是换行 后者使光标下移一行 line feed r 是回车 return n 是换行 new
  • 将COLMAP中生成的images.txt结果可视化

    instant ngp中执行scripts colmap2nerf py时 在colmap text目录下会生成images txt文件 此文件中每两行定义一幅图像的信息 IMAGE ID QW QX QY QZ TX TY TZ CAME
  • HTTP协议和HTTPS协议的区别

    HTTP协议和HTTPS协议的区别 1 HTTP协议传输的数据都是未加密的 也就是明文的 使用HTTP协议传输隐私信息不安全 2 HTTPS协议是由SSL 安全套接层 为网络通信提供安全及数据完整性的一种安全协议 和HTTP协议构建的 是一
  • Nacos启动异常

    可能原因一 集群切换单机 startup m standalone 可能原因二 derby data文件夹内文件解析失败 解决方案 删了derby data文件夹重启就行 报错信息 供网友搜索 2021 08 11 13 11 37 550
  • Fish Redux系列学习之认识view、action

    继续上一篇文章 Fish Redux系列学习之新建page以及认识state 如上图 现在我们学习的是buildview这个组件 说白了 buildView是我们写页面的地方 跟写普通flutter的page页面一样 我们将页面都写在这里面
  • Date互转String和时间戳

    Date转字符串 private static String convertDateToStr Date date String pattrn if date null return StringUtils EMPTY Instant in
  • 数据类型 -- uint32_t 类型

    整型的每一种都有无符号 unsigned 和有符号 signed 两种类型 float和double总是带符号的 在默认情况下声明的整型变量都是有符号的类型 char有点特别 如果需声明无符号类型的话就需要在类型前加上unsigned 无符