for( ;; ) {
/* 実行したい処理 */
/* 繰り返しの終了判定 */
}
では、これを踏まえてクイズに行きましょう。
class GoodScore { public static void main( String[] args ) { int[] sorted = { 92, 87, 80, 78, 45, 32 }; int i; System.out.println( "80点以上を表示します" ); for( i = 0; i < sorted.length && sorted[i] >= 80; i++ ); System.out.println( sorted[i] + "点" ); } }降順にソートされた点数の配列 sorted で、80点以上の点数をプリントしようとしています。 しかし、実行結果は次のようになります。 80点以上を表示します 78点なぜでしょうか? (答えは、次回の Java の Tips で ・・・) |
なお、「項」の評価順と 「演算子」の評価順とは異なるものです。
各項の評価順序は決まっていません。
例) 「b * 4 / 2」について見てみると
(演算子の評価順) 演算子 * と / は優先度が同じで左結合なので先に * が評価されます。
(項の評価順) 演算子 * の項は b と 4 ですが、どちらが先に評価されるかは分かりません。
この例では項の評価順は関係ありませんが、問題になるケースもあります。
たとえば、b( ) * c( ) のように項が関数呼び出しの場合、b( ) が先に実行されるとは限らないので、その前提で書くと問題があります。