【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字面量
相关推荐
m0_7190841121 分钟前
React笔记张天禹
前端·笔记·react.js
Ziky学习记录35 分钟前
从零到实战:React Router 学习与总结
前端·学习·react.js
sensen_kiss1 小时前
INT303 Coursework1 爬取影视网站数据(如何爬虫网站数据)
爬虫·python·学习
red_redemption2 小时前
自由学习记录(116)
学习
r i c k3 小时前
数据库系统学习笔记
数据库·笔记·学习
布列瑟农的星空3 小时前
前端都能看懂的Rust入门教程(三)——控制流语句
前端·后端·rust
野犬寒鸦3 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
shandianchengzi4 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
浅念-4 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
ZH15455891314 小时前
Flutter for OpenHarmony Python学习助手实战:API接口开发的实现
python·学习·flutter