短絡評価 (&&) と (&)
出力はどれか。
public class Main {
public static void main(String[] args) {
int i = 0;
if (i > 0 && ++i > 0) { }
System.out.print(i + " ");
if (i > 0 & ++i > 0) { }
System.out.print(i);
}
}
- A
0 1 - B
1 2 - C
0 0 - D
1 1
正解と解説を見る
正解: A
- A:
&&は左が false なので++iを実行せず 0、&は両側を評価するので++iが実行されて 1 です。 - B:
&&は左が false だと右を評価しません。最初の++iは実行されません。 - C:
&は短絡しないので、2つ目の++iは実行されます。 - D: 最初の if の
&&は短絡評価されるので、そこでは i は増えません。
ポイント
&&は左側が false なら右側を評価しません (短絡評価)。そのため最初の++iは実行されません。&は両側を必ず評価するので、2つ目の++iは実行されます。||と|も同じ関係です。
「分岐文 (if、if/else、switch) の使用」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)