論理演算子&,&&,|,||について、
&&、||はショートサーキット演算子と呼ばれ、左オペランドの結果によって後続処理が不要な場合は処理を省略する。
後続処理というのはショートサーキット演算子以降のすべてに対してなので、以下のような条件も省略される。
public class Main {
public static void main(String[] args) throws Exception {
int a = 1;
int b = 1;
if(a == 2 & b++ == 1&& a++ == 3 & a++ == 4){
}
System.out.println(a+":"+b);
}
}
1:2
もちろん手前で結果未定になる場合は後続も実行される。
public class Main {
public static void main(String[] args) throws Exception {
int a = 1;
int b = 1;
if(a == 2 & b++ == 2|| a++ == 1 & a++ == 4){
}
System.out.println(a+":"+b);
}
}
3:2
|と||が混在したりするようなプログラムがあったらこういう目的なんだろうとは思うが…そんな可読性低そうな方法使うか?