2

(--a,b) とはどういう意味ですか? 誰か説明してくれませんか。現在、計算を手動でトレースしたいだけですが、立ち往生していました。

コードのこの部分:

そうでなければ (a%2 == 0) return (-a) * b + print_it(--a, b);

4

2 に答える 2

5

--aはプレデクリメント演算子です。つまり、式で使用するa 前にの値をデクリメントします。a--式で の現在の値を使用しa、評価の最後にそれをデクリメントする式 と比較してください。

于 2013-01-28T03:21:47.940 に答える
2

--and pre および post 演算子は、Java が C または C++の++ように見える領域ですが、ルールが大きく異なります。

評価が遅れているように見えることは決してなく、結果は完全に定義されています。重要な概念は、演算子の副作用をその値から分離することです。

式評価の一般規則は、第 15 章「Java 言語仕様の式」にあります。--a の仕様は 15.15.2 にあります。Prefix Decrement Operator --副作用として、a の値を 1 減らします。値は、新しい値が格納された後の a の値です。

置デクリメントには同じ副作用があり、式の評価の同じ時点で実行されますが、後置デクリメント式の値は、新しい値が格納される前の変数の値です。

于 2013-01-28T04:14:45.613 に答える