解説
条件分岐では、論理演算をうまく使うことで、簡潔に条件式を書くことができます。
// 0以上を判定
if (a >= 0) {
// 10未満を判定
if (a < 10) {
0以上10未満の時の処理
}
}
// 0以上、10未満を判定
if ((a >= 0) && (a < 10)) {
0以上10未満の時の処理
}
この時ANDの演算に、「&」ではなく「&&」を、ORの演算に「|」ではなく「||」を使っています。これを説明します(こういった演算子の仕様は、プログラミング言語ごとに違います。ここでは、Javaの場合を元に説明を行います)。
論理積「&」、論理和「|」といった論理演算子には、短絡演算子(ショートサーキット演算子)というものが、別に用意されています。
記号:&& 式の例:res = a && b;
記号:|| 式の例:res = a || b;
通常の論理演算子では、演算子の優先順位に従って計算が行われていきます。
(1 > 2) & (2 < 3) ↓ false & true ↓ false
しかし、短絡演算子では、この演算子の左側を計算して、右側の計算をしなくても結果が決まってしまう場合は、右側の計算を行わずに結果を返します。
(1 > 2) & (2 < 3)
↓
false & (2 < 3) ← 論理積は左側がfalseなら必ず結果はfalseになる
なので右側の計算を行わずにfalseを返す
↓
false
こういった演算子を使うことで、計算量を減らすことができます。if文の中で使う条件式では、特別な理由がない限り、この短絡演算子の形で使うことが多いです。この方が、高速で処理されるからです。
if ((a >= 0) && (a < 10)) {
0以上、10未満の場合の処理
最初の式「a >= 0」がfalseなら、右を評価する必要はないので「a < 10」は計算されない。
}
サンプル
条件分岐を、論理演算で扱った処理を、JavaScriptで簡単に書いてみます。
<html>
<head>
<title>「条件分岐と論理演算」のサンプル</title>
</head>
<body>
<pre><script type="text/javascript">
for (var i = 0; i < 6; i ++) {
if ((i >= 2) && (i < 4)) {
document.writeln(i + " は 2以上かつ4未満");
} else {
document.writeln(i);
}
}
document.writeln("");
for (var i = 0; i < 6; i ++) {
if ((i < 2) || (i >= 4)) {
document.writeln(i + " は 2未満または4以上");
} else {
document.writeln(i);
}
}
document.writeln("");
</script></pre>
</body>
</html>
0 1 2 は 2以上かつ4未満 3 は 2以上かつ4未満 4 5 0 は 2未満または4以上 1 は 2未満または4以上 2 3 4 は 2未満または4以上 5 は 2未満または4以上
