rust - 当整数算术运算溢出时,Rust 编程语言会发生什么?
问题描述
据我所知,在 C 编程语言(和许多基于 C 的语言)中,当算术运算在 N 位整数上溢出时,此溢出会将结果缩短为 2 的 N 次幂,仅保留 LSB 的结果。
当这样的整数算术运算在 Rust 编程语言中溢出时会发生什么。
解决方案
当你在调试模式下编译时,Rust 会检查整数溢出,如果发生这种行为会导致你的程序在运行时崩溃。
当您使用--release
标志在发布模式下编译时,Rust 不包括对导致恐慌的整数溢出的检查。对于有符号值,结果基于二进制补码包装。对于无符号值,结果是类型的最大值 + 1 的模。
标准库有许多函数可以更好地控制溢出情况下应该发生的情况,例如 、checked_add
和wrapping_add
其他一些变体。
如果您还没有,我建议您阅读The Rust Programming Language,其中有一节专门解决了这个问题。
推荐阅读
- sql - 从 BYTE 到 TEXT 的 Informix 数据转换
- sql - 查找在“%Y-%m”中给出最低平均评分的用户
- r - 提取 stat_xspline 拟合的方法
- python - 熊猫替换不起作用(错误:试图在数据帧的切片副本上设置值)
- python - 在python中使用正则表达式从多种格式的字符串中提取字符串和数字?
- html - 如何将 Vue 关联数组转录为 HTML 表单输入值
- slack - 步骤类型“松弛/状态”不是有效类型
- sql - 当 PRECEDING 范围为 NULL 时,TSQL 移动 AVG() 返回 null ...超过 1 列
- ckeditor5 - ckeditor5 MentionCustomization 无法读取未定义的属性“createAttributeElement”
- google-apps-script - getEditResponseURL() 到字符串到电子邮件收到 404 错误