Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Логические операторы выполняют логические и логические (&&) и логические (||) операции.
Синтаксис
logical-AND-expression:
inclusive-OR-expression
logical-AND-expression
&&
inclusive-OR-expression
logical-OR-expression:
logical-AND-expression
logical-OR-expression
||
logical-AND-expression
Замечания
Логические операторы не выполняют обычные арифметические преобразования. Вместо этого они оценивают каждый операнд с точки зрения его эквивалентности 0. Результатом логической операции является 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 выводится. Как только одно из условий оценивается как истинное, оценка прекращается.