次のコードがあります。それに問題なし:Javaのプリインクリメント
左< = B trueを返すいくつかの配列インデックス、(b)は、以下のヘルパー関数であるwhile (++left < to && less(a[left], a[from]));
。 - A [<から=配列インデックス<へ]配列
私は特にこれより上位のコードの違いを理解していない:私は全体の発現の前に、preincreementのevaluetesを読んでいるよう
while (left < to && less(a[++left], a[from]));
をしかし、それは事例ではありません(私が最初にそれを使用したとき、私は例外から外れています)。 誰かがこの問題を明確にすることはできますか?
APPEND:以下のため コード:配置の間
private boolean less(T a, T b) {
return a.compareTo(b) <= 0;
}
問題の一部は、&&短絡である可能性があります。私は完全な説明をすることはできませんが、むしろあいまいでないように書き直したいので、そのような詳細については心配する必要はありません。 (「less」のコードを表示するのに役立つかもしれません) – JETM
"preincrementは全体表現の前に評価されます"という文脈から外れているか、ソースがあいまいであると説明しているか、誤解しています。この場合の「式」は、式++が適用された式を意味するだけで、その式が出現する式全体ではありません。評価の順序は、演算子の優先順位によって厳密に規定され、次に左から右に向かいます。 – Durandal
@ Durandalありがとうございました。 –