Логический оператор 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
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по