Rust代码为什么输出 2
Rust代码为什么输出 2fn main() {
let mut a = 5;
let mut b = 3;
print!("{}", a-- - --b);
}
与C
或Java
不同,Rust
中没有一元递增或递减运算符。Rust
语言设计FAQ
曾经提到了原因:
为什么Rust没有递增和递减运算符?
前置递增和后置递增(以及递减的等价物)虽然方便,但也相当复杂。 它们需要了解评估顺序,并且常常导致C
和C++
中的隐晦错误和未定义行为。 x = x + 1
或x += 1
只稍微长一点,但是更加明确。
在没有后置和前置递减运算符的情况下,a-- - --b
被解析为a - (-(-(-(-b))))
。对于a = 5
和b = 3
的情况,该表达式的值为5 - 3
,即2
。