/*--------------------------------------------------------------------------*/ /* File name : err3.java */ /* : */ /* Cause : Evaluation sequence of the formula which used */ /* : the substitution operator is not performed correctly. */ /* : */ /* Message : NG1:[27]-->[9] */ /* : NG2:[27]-->[9] */ /* : */ /* Note : JLS 15.6 Evaluation Order (p305) */ /* S15.6.1 Evaluate Left-Hand Operand First */ /* : A formula should be evaluated to 9*3 instead of 3*3. */ /*--------------------------------------------------------------------------*/ public class err3 { public static void main(String[] args) { int x = 9; x *= (x = 3); if ( x == 27 ) { System.out.println("OK1"); } else { System.out.println("NG1:[27]-->["+x+"]"); } int y = 9; y = y * (y = 3); if ( y == 27 ) { System.out.println("OK2"); } else { System.out.println("NG2:[27]-->["+y+"]"); } } }