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

Синтаксис

логическое или выражение||логических выражений

Замечания

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

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

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

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

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

В приведенном выше примере, если x равно wлибо , yлибо zвторой аргумент функции printf вычисляется true, который затем повышен до целого числа, а значение 1 выводится. В противном случае оно вычисляется false и выводится значение 0. Как только одно из условий оценивается 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