Логические операторы в C
Логические операторы выполняют операции логического И (&&) и логического ИЛИ ( || ).
Синтаксис
выражение-логического-И:
выражение-инклюзивного-ИЛИвыражение-логического-И && выражение-инклюзивного-ИЛИ
выражение-логического-ИЛИ:
выражение-логического-Ивыражение-логического-ИЛИ || выражение-логического-И
Логические операторы не выполняют обычных арифметических преобразований. Вместо этого они оценивают каждый операнд с точки зрения его эквивалентности нулю. Результатом логической операции является либо 0, либо 1. Результат имеет тип int.
Логические операторы C описываются ниже.
Оператор |
Описание |
---|---|
&& |
Логический оператор И создает значение 1, если оба операнда имеют ненулевое значение. Если любой из операндов имеет значение 0, результат равен 0. Если первый операнд операции логического И имеет значение 0, то второй операнд не вычисляется. |
|| |
Оператор логического ИЛИ выполняет над своими операндами операцию включающего ИЛИ. Если оба операнда имеют значение 0, результат будет равен 0. Если любой из операндов имеет ненулевое значение, результат будет равен 1. Если первый операнд операции логического ИЛИ имеет ненулевое значение, то второй операнд не вычисляется. |
Операнды выражений логического И и логического ИЛИ вычисляются слева направо. Если значения первого операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется. Такой способ называется "сокращенным вычислением". После первого операнда находится точка следования. Дополнительные сведения см. в разделе Точки следования.
Примеры
В следующем примере показано использование логических операторов.
int w, x, y, z;
if ( x < y && y < z )
printf( "x is less than z\n" );
В этом примере функция printf вызывается для печати сообщения, если x меньше y, а y меньше z. Если x больше y, то второй операнд (y < z) не вычисляется и сообщение не печатается. Обратите внимание, что это может привести к возникновению проблем в случаях, когда второй операнд имеет побочные эффекты, на которые по ряду причин может рассчитывать программист.
printf( "%d" , (x == w || x == y || x == z) );
В этом примере, если x равно w, y или z, то второй аргумент функции printf имеет значение true и код выводит значение 1. В противном случае он возвращает значение false и код выводит значение 0. Как только обнаруживается, что одно из значений равно true, вычисление прекращается.