Логический оператор 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