(--a,b) とはどういう意味ですか? 誰か説明してくれませんか。現在、計算を手動でトレースしたいだけですが、立ち往生していました。
コードのこの部分:
そうでなければ (a%2 == 0) return (-a) * b + print_it(--a, b);
(--a,b) とはどういう意味ですか? 誰か説明してくれませんか。現在、計算を手動でトレースしたいだけですが、立ち往生していました。
コードのこの部分:
そうでなければ (a%2 == 0) return (-a) * b + print_it(--a, b);
式--a
はプレデクリメント演算子です。つまり、式で使用するa
前にの値をデクリメントします。a--
式で の現在の値を使用しa
、評価の最後にそれをデクリメントする式 と比較してください。
--
and pre および post 演算子は、Java が C または C++の++
ように見える領域ですが、ルールが大きく異なります。
評価が遅れているように見えることは決してなく、結果は完全に定義されています。重要な概念は、演算子の副作用をその値から分離することです。
式評価の一般規則は、第 15 章「Java 言語仕様の式」にあります。--a の仕様は 15.15.2 にあります。Prefix Decrement Operator --副作用として、a の値を 1 減らします。値は、新しい値が格納された後の a の値です。
後置デクリメントには同じ副作用があり、式の評価の同じ時点で実行されますが、後置デクリメント式の値は、新しい値が格納される前の変数の値です。