面试题答案
一键面试常见整数溢出场景
- 加法溢出:当两个整数相加的结果超出该整数类型所能表示的最大值时,就会发生加法溢出。例如,
u8
类型最大值为255,255 + 1
就会溢出。 - 减法溢出:在无符号整数中,当被减数小于减数时可能发生溢出。例如,
u8
类型中,0 - 1
会溢出。 - 乘法溢出:两个较大整数相乘的结果超出该整数类型的最大值时会发生乘法溢出。比如
u32::MAX * 2
。
Rust默认处理方式
在默认情况下,Rust在release模式下整数溢出是未定义行为(UB),程序可能会出现各种不可预测的结果,包括程序崩溃、数据损坏等。在debug模式下,Rust会启用整数溢出检查,当发生溢出时会触发panic,终止程序并给出错误信息,提示发生了整数溢出。