【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字面量
相关推荐
a1117761 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
doiito2 小时前
【AI 应用】从“外国人味”到地道中文:kokoroi-rs v0.1.2 架构升级深度解析
ai·rust·系统设计
破碎的南瓜3 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
你想知道什么?3 小时前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御3 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
谙弆悕博士3 小时前
系统集成项目管理工程师教程(第3版)笔记——第17章:法律法规和标准规范
笔记·职场和发展·学习方法·业界资讯·软考·法律·法规
AOwhisky5 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
谙弆悕博士5 小时前
系统集成项目管理工程师教程(第3版)笔记——第4章:信息系统架构
笔记·系统架构·项目管理·创业创新·学习方法·业界资讯·物理
minglie16 小时前
zynq中linux系统的自动登录和免密登录
学习