論理演算子の評価方法
特にインクリメント・デクリメント時には注意が必要
Increment.java
public class Increment {
public static void main(String[] args) {
int x = 10;
int y = 10;
if (x >= 10 && ++y >= 10) {
//xがfalseならyを評価しない
System.out.println("x = " + x);
System.out.println("y = " + y);
}
System.out.println("------");
if (x >= 10 || ++y >= 10) {
//xがtrueならyを評価しない
System.out.println("x = " + x);
System.out.println("y = " + y);
}
System.out.println("------");
if (x >= 10 | ++y >= 10) {
//xがtrueでもyを評価する
System.out.println("x = " + x);
System.out.println("y = " + y);
}
System.out.println("------");
if (x > 10 & ++y > 10) {
//xがfalseでもyを評価する
System.out.println("nothing");
}
System.out.println("x = " + x);
System.out.println("y = " + y);
}
}
x = 10
y = 11
------
x = 10
y = 11
------
x = 10
y = 12
------
x = 10
y = 13