【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字面量
相关推荐
前进的李工3 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
正在走向自律5 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
蒸蒸yyyyzwd5 小时前
后端学习笔记三个知识
笔记·八股
CCIE-Yasuo6 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga7 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
Zhao-Jichao8 小时前
AI Prompting for Everyone 课程笔记 - P19 数据分析 Data Analysis
人工智能·笔记·数据分析
li星野8 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光8 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
ACP广源盛139246256738 小时前
选型笔记:Type‑C 扩展坞方案评估|DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP
笔记·硬件架构·硬件工程·视频·国产芯片
WEI_YANG_JU9 小时前
初中数学教学中合作学习的研究与实践
学习