Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Программирование_1.doc
Скачиваний:
8
Добавлен:
19.11.2019
Размер:
501.25 Кб
Скачать

3.2.Операторы отношения и логические операторы

В предыдущем примере использовался интуитивно понятный, но не рассмотренный ранее оператор «>». Это один из операторов отношения, которые позволяют создавать различные выражения для конструкции «if-else».

Операторы отношения позволяют сравнить два числа, и в результате сравнения выдать конструкции if значение истинна или ложь.

В некоторых случаях в условных выражениях можно обойтись без операторов отношения. В языке С истинными считаются выражения, результат которых отличен от нуля, а ложными считаются выражения, результат которых равен нулю. Например, следующее выражение будет истинным, если переменная a нечетная:

a%2.

Существуют следующие операторы отношения:

«>» – больше (левый операнд больше правого);

«>=» – больше или равно;

«<» – меньше;

«<=» – меньше или равно;

«==» – равно;

«!=» – не равно;

Операторы отношения имеют меньший приоритет, чем арифметические. Поэтому в операндах этих операторов можно без скобок выполнять математические действия. Например, следующее выражение проверяет, четное ли значение содержит переменная a:

0 = = a%2.

Операция нахождения остатка имеет больший приоритет и будет выполнена первой. И уже результат этой операции будет сравниваться с нулем.

Иногда в программе требуется выполнить определенные действия при выполнении нескольких условий. В таких случаях могут применяться логические операторы.

Если нужно выполнить определенные действия, если истинные несколько условий одновременно, то можно использовать оператора «&&» (оператор «и»). Например, нужно проверить, входит ли число x в определенный диапазон от a до b. Условное выражение можно записать следующим образом: (x>a && x<=b).

Если нужно выполнить определенные действия если истинным является хотя бы одно из нескольких условий, то можно использовать оператор «||» (оператор «или»). Например, нужно проверить, нужно проверить, что число x не входит в диапазон от a до b. Условное выражение можно записать следующим образом: (x<a || x>=b).

Обратите внимание, что в обоих вышеприведенных выражениях не используются скобки, чтобы указать порядок действий. В языке С логические операторы имеют приоритет ниже, чем операторы отношения (и, соответственно, ниже, чем арифметические операторы). Это позволяет во многих случаях обходиться без лишних скобок в условных выражениях.

3.3.Остальные операторы

Остальные операторы языка C не обязательны для написания учебных программ, однако их использование позволяет сократить объем кода и повысить читаемость программ.

Побитовые операторы позволяют работать с переменными как с набором битов. Для их использования нужно знать внутренне представление чисел и булеву алгебру, поэтому пока ограничимся только их перечислением:

& - побитовое И;

| - побитовое ИЛИ;

^ - побитовое исключающее ИЛИ;

<< - сдвиг влево;

>> - сдвиг вправо;

~ - побитовое отрицание (унарный).

Операторы присваивания, кроме собственно оператора присваивания («=»), предназначены для сокращения записи часто встречаемых выражений.

Часто в программе требуется прибавить к переменной какое-либо значение, и результат сохранить в эту же переменную. Это можно записать так: i=i+1;. Оператор присваивания «+=» позволяет сократить эту запись следующим образом: i+=1;.

Имеются аналогичные операторы присваивания, позволяющие выполнить любую арифметическую или побитовую операцию и одновременно сохранить результат: «+=», «­–=», «*=», «/=», «%=», «>>=», «<<=», «&=», «|=», «^=».

Операции прибавления к числу 1 или отнимания от числа 1 настолько часто встречаются в программах, что для них созданы отдельные операторы, которые называются операторами инкремента и декремента соответственно.

Существуют два оператора инкремента: «a++», «++a». Постфиксный оператор «++» (т.е. тот, который записан после операнда) увеличивает операнд на 1, но возвращает старое значение. Префиксный оператор «++» (т.е. тот, который записан перед операндом) увеличивает операнд на 1, и возвращает новое, увеличенное значение. Например, если значение переменной a было равно 1, то после выполнения выражения b=a++; значение a будет равно 2, а значение b будет равно 1 (старому значению a). После выполнения выражения b=++a; значение a будет равно 2, а значение b будет равно 2 (новому значению a).

Постфиксный («a– –») и префиксный («– –a») варианты оператора декремента ведут себя аналогичным образом.

Условный оператор «?:» предназначен для короткой записи управляющей конструкции «if-else». Он имеет три операнда и в общем виде записывается следующим образом:

выр1 ? выр2 : выр3;

Первым вычисляется выражение выр1. Если его значение не нуль (истина), то вычисляется выражение выр2, и значение этого выражения становится значением всего условного выражения. В противном случае вычисляется выражение выр3 и его значение становится значением условного выражения.

Например, нужно в переменную z записать наибольшее число из переменных a и b. С помощью условного оператора это можно коротко записать следующим образом:

z = (a > b) ? a : b;