小编Adi*_*eya的帖子

对于整数,为什么 x = x * y / z 给出的结果与 x *= y / z 不同?

我有以下功能:

pub fn s_v1(n: &u64) -> u64 {
    let mut x: u64 = 1;

    for i in 1..=*n  {
        x = x * (*n + i) / i;
    }

    x
}
Run Code Online (Sandbox Code Playgroud)

这段代码给出了正确的答案s_v1(&20) == 137846528820

但是,如果我将 for 循环中的行更改为x *= (*n + i) / i;

答案改为s_v1(&20) == 16094453760

为什么结果不同?不是x = x * y一样吗x *= y

integer-division operator-precedence associativity rust

12
推荐指数
2
解决办法
3749
查看次数