Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Основы программирования на Си.doc
Скачиваний:
361
Добавлен:
02.05.2014
Размер:
1.3 Mб
Скачать

Операция, уровень приоритета которой равен 9

Уровень приоритета операции поразрядное исключающее ИЛИ равен 9. Порядок выполнения таких операций слева направо.

Операция поразрядное исключающее или: ^

Тип операндов - интегральный. Тип результата: int,long,unsigned.

Использование:

ie1^ie2

Побитовая операция исключающее ИЛИ двоичных представлений ie1иie2. Значение выражения содержит 1 в тех разрядах, в которых иie1иie2имеют разные двоичные значения, и 0 во всех остальных разрядах.

Пример:

diffbits=x^y;

Операция, уровень приоритета которой равен 10

Уровень приоритета операции поразрядное включающее ИЛИ равен 10, порядок выполнения таких операторов - слева направо.

Операция поразрядное включающее ИЛИ: |

Тип операндов - интегральный. Тип результата: int, long, unsigned.

Использование:

ie1 | ie2

Побитовая операция ИЛИ двоичных представлений ie1иie2. Значение выражения содержит 1 во всех разрядах, в которыхie1илиie2содержат 1, и 0 во всех остальных разрядах.

Пример:

attrsum=attr1 | attr2;

Операция, уровень приоритета которой равен 11

Уровень приоритета логической (условной) операции И равен 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;