err5.java   [plain text]


/*--------------------------------------------------------------------------*/
/* file_name  : err5.java                                              */
/*            :                                                             */
/* Cause      : Evaluation order of method argument is not correct.         */
/*            :                                                             */
/* Message    : NG                                                          */
/*            : a:[1]-->[2]                                                 */
/*            : b:[3]-->[3]                                                 */
/*            : c:[2]-->[2]                                                 */
/*            :                                                             */
/* Note       : JLS 15.6 Evaluation Order                                   */
/*                 S15.6.4 Argument Lists are Evaluated Left-to-Right(p309) */
/*             [Each argument expression appears to be fully evaluated      */
/*              before any part of any argument expression to its right.]   */
/*--------------------------------------------------------------------------*/

public class err5 {
  public static void main(String[] args) {
    int x = 1;

    err5 obj = new err5();
    obj.print(x, x = 3, x = 2);
  }

  void print(int a, int b, int c) {
    if ( a == 1 && b == 3 && c == 2 ) {
      System.out.println("OK");
    } else {
      System.out.println("NG");
      System.out.println("a:[1]-->["+a+"]");
      System.out.println("b:[3]-->["+b+"]");
      System.out.println("c:[2]-->["+c+"]");
    }
  }
}