Уровень приоритета логической (условной) операции и равен 11. Выполняется операция слева направо.
Операция логическое И: &&
Тип операндов - арифметический или указатель. Тип результата - int. Если первый операнд равен 0, то результат равен 0. В противном случае результат будет равен 1, если второй операнд не равен 0, и равен 0, если второй операнд равен 0 (если первый операнд равен 0, то второй операнд не вычисляется).
Использование:
e1&&e2Логическая операция И значений e1 и e2. Вначале проверяется значение e1; значение e2 проверяется только в том случае, если значение e1 - Истина. Значением выражения является Истина, если значения e1 и e2 - Истина.
Пример:
if(p!=NULL&&*p>7) n++;Если p - ненулевой указатель и значение переменной, на которую указывает p, больше, чем 7, то в этом случае n увеличивается на 1. Обратите внимание, что если значение указателя p равно NULL (0), то выражение *p не имеет смысла.
Операция, уровень приоритета которой равен 12
Уровень приоритета операции равен 12, выполняются такие операции слева направо.
|
|
Операция логическое ИЛИ: ||
Тип операндов - арифметический или указатель. Тип результата int. Если хотя бы один операнд не равен 0, результат равен 1; иначе результат будет равен 0.
Использование:
e1 || e2Логическая операция ИЛИ значений e1 и e2. Вначале проверяется значение e1; значение e2 проверяется только в том случае, если значение e1 - ложь. Значением выражения является Истина, если истинно любое значение e1 или e2.
Пример 1:
if(x<A || x>B) printf("out of range");Операция, уровень приоритета которой равен 13
Уровень приоритета операции равен 13, выполняются такие операции слева направо.
Операция условный оператор:?
Тип операндов - арифметические; второй и третий операнды могут быть указателями, структурами, объединениями. Тип результата: int, long, unsigned, double, указатель, структура или объединение. Второй и третий операнды преобразуются к одному и тому же типу.
Условный оператор является единственным оператором, для которого необходимы три операнда; используется он следующим образом:
a? b: cгде a, b, c - выражения. Если a не равно 0, то результат выражения a? b: c равен b; иначе результат равен c. Из двух последних операндов вычисляется только один.
Использование:
ae?e1:e2или
pe?e1:e2 (где pe - указатель)Если истинно ae или pe, то выполняется e1; иначе выполняется e2. Значением этого выражения является значение выражения e1 или e2.
Пример:
abs=(i<=0)?-i:i;