【RUST】学习笔记-整型

打不过就加入:

C++今天已经40年,我用C++编程也已15年。虽然网上有很多看衰C++的看法,但我始终坚信C++会有它顽强的生命力。

但最近看到RUST已经在Linux转正了,所以我打算加入RUST,看看它到底有何魔力。
另外也是为了水点文章,获取"流量券"

文章目录

整型

RUST中的整型类型基本上等于C++标准<cstdint>头文件中定义的整型对应。

类型 含义
u8 8bits 无符号整型
i8 8bits 有符号整型
u16 16bits 无符号整型
i16 16bits 有符号整型
u32 32bits 无符号整型
i32 32bits 有符号整型
u64 64bits 无符号整型
i64 64bits 有符号整型
u128 128bits 无符号整型
i128 128bits 有符号整型
usize 机器字宽度的无符号整型
isize 机器字宽度的有符号整型

机器字宽度是CPU架构的地址位宽度,32位架构(x86,aarch32等)为32bits,64位架构(x86_64,aarch64等)为64bits。

隐式整型越界的处理

C++对整型计算时发生越界时的行为没有明确定义,而RUST做出了定义。

  • 在debug版本中,整型越界会出现panic。
  • 在release版本中,整型越界会用计算结果与当前类型的最大值取模。

显式整型越界的处理

Rust的标准库中提供四种整型运算方法。这些方法在debug和release版本中的行为是一致的。

方法 行为
checked_${alg} 返回Option类型,没越界时返回Some(v),溢出时返回None
wrapping_${alg} 没越界时返回结果,越界时返回结果与可表示最大值的取模
saturating_${alg} 没越界时返回结果,越界时,如果值离最大值近返回最大值,如果值离最小值近返回最小值
overflowing_${alg} 返回(result, overflowed)。result为wrapping_${alg}的结果,overflowed为布尔值标识是否越界

上表中${alg} 可以是

标识 含义
add 加法
sub 减法
mul 乘法
div 除法
rem 去余
neg 取负
abs 取绝对值
pow
shl 按位左移
shr 按位右移

字面量

  • 在定义字面量时需要在数字后面添加类型后缀以标识数字的类型
  • 数字之间可以使用_进行分割增加可读性
  • 0x、0o 和 0b前缀分别标识十六进制、八进制和二进制

如:

rust 复制代码
116i8 //i8类型字面量
0xFFFF_FFFFu32 //无符号32bits字面量
相关推荐
&&Citrus41 分钟前
【CPN学习笔记(二)】Chap2 非分层颜色 Petri 网——从一个简单协议开始读懂 CPN
笔记·学习·php·cpn·petri网
HXQ_晴天1 小时前
Linux 磁盘清理 & 查看常用指令笔记
笔记
小橘子8312 小时前
(学习)Claude Code 源码架构深度解析
学习·程序人生·架构
土豆12503 小时前
Tauri 入门与实践:用 Rust 构建你的下一个桌面应用
前端·rust
土豆12503 小时前
Rust 错误处理实战:anyhow + thiserror 的黄金搭档
rust
diablobaal4 小时前
云计算学习100天-第102天-Azure入门4
学习·云计算·azure
AI_零食4 小时前
Flutter 框架跨平台鸿蒙开发 - 自定义式按钮设计应用
学习·flutter·ui·华为·harmonyos·鸿蒙
小陈phd4 小时前
多模态大模型学习笔记(三十)—— 基于YOLO26 Pose实现车牌检测
笔记·学习
野指针YZZ5 小时前
XV6操作系统:trap机制学习笔记
笔记·学习
Zarek枫煜5 小时前
C3 编程语言 - 现代 C 的进化之选
c语言·开发语言·青少年编程·rust·游戏引擎