- •Е. А. Альтман основы языка с омск 2012
- •Введение
- •Лабораторная работа 1 Изучение среды программирования
- •Теоретические сведения
- •1.1.Среда программирования
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 2 Переменные и операции над ними
- •Теоретические сведения
- •2.1.Основные определения
- •2.2.Операции над целыми числами
- •2.3.Вещественные числа и операции над ними
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 3 Конструкция выбора, логические и другие операции
- •Теоретические сведения
- •3.1.Конструкция выбора и составная инструкция
- •3.2.Операторы отношения и логические операторы
- •3.3.Остальные операторы
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 4 Конструкции циклов
- •Теоретические сведения
- •4.1.Цикл while
- •4.2.Цикл for
- •4.3.Конструкция в конструкции
- •Задание к работе
- •5.2.Свойства массивов
- •5.3.Строки
- •5.4.Структуры
- •Задание к работе
- •6.2.Операции с указателями
- •6.3.Указатели и массивы
- •6.4.Указатели и структуры
- •Задание к работе
- •7.2.Использование указателей для передачи результата и аргумента
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •644046, Г. Омск, пр. Маркса, 35
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;