Логический оператор OR: ||

Синтаксис

логическое выражение или выражение||Логические выражения и выражения

Комментарии

Логический оператор OR (||) возвращает логическое значение true , если один или оба операнда имеют значение , true и возвращает в false противном случае. Операнды неявно преобразуются в тип bool перед вычислением, а результат имеет тип bool. Логическое ИЛИ имеет ассоциативность в направлении слева направо.

Операнды для логического оператора OR не обязательно должны иметь одинаковый тип, но они должны иметь логический, целочисленный тип или тип указателя. В качестве операндов часто используются реляционные выражения и выражения равенства.

В выражении логического ИЛИ сначала полностью вычисляется первый операнд и учитываются все побочные эффекты, и лишь после этого вычисление продолжается.

Второй операнд вычисляется только в том случае, если первый операнд имеет значение false, так как вычисление не требуется, если логическое выражение ИЛИ имеет значение true. Это называется оценкой короткого замыкания .

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

В приведенном выше примере, если x равно w, yили z, второй аргумент printf функции принимает значение true, который затем повышается до целого числа и выводится значение 1. В противном случае он получает false значение и выводится значение 0. Как только одно из условий принимает значение true, оценка прекращается.

Ключевое слово operator для ||

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