【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字面量
相关推荐
Jackyzhe3 分钟前
从零学习Kafka:生产者分区机制
分布式·学习·kafka
sinat_2554878110 分钟前
数组·学习笔记
java·javascript·笔记
迷途之人不知返12 分钟前
List的学习
数据结构·c++·学习·list
tianyuanwo15 分钟前
Rust RPM Spec 中的动态宏定义:原理、原因与低版本兼容方案
rust·lua·spec
三克的油24 分钟前
YOLOV5数据学习
人工智能·学习·yolo
zhangrelay28 分钟前
复盘《用智能大模型复盘课程博客停更案例》
笔记·学习
summer10828 分钟前
【读书笔记】蛤蟆先生去看心理医生:洞察自我
笔记·产品经理
sjsjsbbsbsn31 分钟前
RAG 基础学习总结
java·数据库·学习
FserSuN35 分钟前
Git Worktree 使用学习
git·学习
YouCanYouUp.39 分钟前
个人成长与目标执行手册 V1.0
学习