論理 OR 演算子: ||

構文

logical-or-expression||logical-and-expression

解説

論理 OR 演算子 (||) は、どちらかのオペランドまたは両方のオペランドが true の場合はブール値 true を返し、それ以外の場合は false を返します。 オペランドは、評価前に bool 型に暗黙的に変換され、結果は bool 型になります。 論理 OR の結合規則は左から右です。

論理 OR 演算子のオペランドは、同じ型である必要はありませんが、ブール型、整数型、またはポインター型である必要があります。 オペランドは一般に関係式または等価式です。

最初のオペランドが完全に評価され、すべての副作用が完了した後で、論理 OR 式の評価が続行されます。

2 番目のオペランドは、最初のオペランドが false と評価された場合にのみ評価されます。これは、論理 OR 式が true の場合、評価は必要ないためです。 これは、"ショートサーキット" 評価と呼ばれます。

printf( "%d" , (x == w || x == y || x == z) );

上の例では、xwy、または z と等しい場合、printf 関数の 2 番目の引数が true と評価され、整数に昇格されて、値 1 が出力されます。 それ以外の場合は、false と評価され、値 0 が出力されます。 条件の 1 つが true と評価されると、直ちに評価が停止します。

|| の演算子キーワード

C++ では、|| の代替スペルとして or が指定されます。 C では、<iso646.h> ヘッダーにマクロとして代替スペルが指定されています。 C++ では、代替スペルはキーワードであり、<iso646.h> や C++ でそれに相当する <ciso646> の使用は非推奨です。 Microsoft C++ では、/permissive- または /Za コンパイラ オプションを使用して、代替スペルを有効にする必要があります。

// expre_Logical_OR_Operator.cpp
// compile with: /EHsc
// Demonstrate logical OR
#include <iostream>
using namespace std;
int main() {
   int a = 5, b = 10, c = 15;
   cout  << boolalpha
         << "The true expression "
         << "a < b || b > c yields "
         << (a < b || b > c) << endl
         << "The false expression "
         << "a > b || b > c yields "
         << (a > b || b > c) << endl;
}

関連項目

C++ の組み込み演算子、優先順位、結合規則
C 論理演算子