我的朋友说"mod"和"rest"之间存在差异.
如果是这样,那么C和C++的差异是什么?"%"是指C中的"mod"还是"rem"?
我正在编写一个循环方法,用于向索引向前或向后移动索引.以下代码用于向后循环:
(i-1)%list_length
Run Code Online (Sandbox Code Playgroud)
在这种情况下,i属于类型usize,这意味着它是无符号的.如果i等于0,则会导致"尝试减去溢出"错误.我尝试使用正确的转换方法来解决此问题:
((i as isize)-1)%(list_length as isize)) as usize
Run Code Online (Sandbox Code Playgroud)
这导致整数溢出.
我理解错误发生的原因,目前我通过检查索引是否等于0来解决问题,但我想知道是否有某种方法可以通过将变量转换为正确的类型来解决它.
我有以下 Rust 代码的问题:
pub fn median(v: &Vec<i32>) -> f32 {
let len = v.len();
match len % 2 {
0 => (v[len / 2 - 1] + v[len / 2]) as f32 / 2 as f32,
1 => v[(len - 1) / 2] as f32,
}
}
Run Code Online (Sandbox Code Playgroud)
由于“非详尽模式”错误,此代码无法编译。这是为什么?% 运算符返回什么?