2.2 Операции,
выражения и операторы.
Теперь рассмотрим следующую
программу, выполняющую вычисления по формуле С=5*(F-32)/9 и печатающую значения температуры
по шкале Фаренгейта и Цельсия.

Итак, результатом работы
программы, будет экран:

В нашей программе только одна
функция, поэтому она обязана называться main().
Набор операторов, заключенный в
фигурные скобки, называется составным
оператором или блоком.
С помощью оператора описания
объявляются имена (идентификатора) и свойства
переменных. Делается это до того, как переменные
будут использованы. Оператор описания состоит из
названия типа и списка переменных,
перечисляемых через запятую. Названия типов
являются зарезервированными словами. Эти
ключевые слова нельзя использовать в качестве
идентификаторов.
В операторе присваивания fahr=68.0; присутствует точка в записи числа.
Она отделяет дробную часть числа от его целой
части.
В следующем операторе
присваивания встречаются операции умножения,
вычитания, деления. Очевидно, что результат
вычислений зависит от порядка вычислений. Как и в
языке Паскаль, так и в языке Си, операции
умножения и деления обладают большим
приоритетом, чем операции сложения и вычитания.
Одинаковые по приоритету операции выполняются в
стандартном порядке. Для изменения порядка
используют скобки.
В функции printf, каждой конструкции первого
аргумента, начинающейся с %, соответствует второй аргумент,
третий аргумент и т.д. Спецификаторы и
соответствующие им аргументы должны быть
согласованы по количеству и типу.
Язык Си имеет широкий набор
возможностей для обработки данных. Начнем
знакомство с этими возможностями с изучения
основных арифметических операций: сложения,
вычитания, деления, а также операции
присваивания.
Если в языке Паскаль знак
равенства играет роль знака для записи
логических выражений, то в языке Си знак
равенства не означает “равно”. Он означает операцию
присваивания некоторого значения.
С помощью оператора count=10; переменной с именем count присваивается значение 10. Как и на языке Паскаль, при
выполнении операции присваивания, слева от знака
присваивания записывается имя переменной, а
справа – её значение. Обратная запись (10=count;) не имеет смысла. Невозможно константе
присвоить какое-то значение. Её значением
является она сама.
В программировании, довольно
часто, используются операторы присваивания
следующего вида: i=i+1;.
Смысл таких операторов в следующем: “К значению
переменной i прибавить 1, и
присвоить переменной i новое
значение”.
При выполнении операции
присваивания, сначала выполняется выражение
записанное справа от оператора, а затем
результат вычисления присваивается величине,
имя которой записано слева от оператора
присваивания.
Как и в Паскале, так и в Си,
операция сложения называется бинарной, так
как она имеет дело с двумя операндами. Операнды
могут быть как переменными, так и константами:
|
Операнд 1 |
|
Операнд2 |
| sum = |
23 |
+ |
42; |
| i = |
i |
+ |
1; |
| anim = |
cats |
+ |
dogs; |
Знак “минус”
используется как для выполнения операции
вычитания, так и для указания или изменения
алгебраического знака некоторой величины. Когда
знак минус используется подобным образом, данная
операция называется унарной.
Операции умножения и деления
записываются так же как и в Паскале: * и /. Как и в
Паскале, в Си нет операции возведения в степень.
Для этого используют операцию умножения: n3=n*n*n. Для больших степеней можно
использовать стандартную формулу: an=en*lna. Надо
заметить, что над данными целого типа операция
деления производится не так, как над данными с
плавающей точкой. В отличие от Паскаля, где
результат деления всегда вещественное число,
в языке Си принято правило, согласно которому
дробная часть у результата деления целых чисел
отбрасывается. Это действие называется
“усечением”. В Паскале же, для деления нацело,
используется стандартная функция div.
Пример:
| Деление |
Результат |
| 7.0/4.0 |
1.75 |
| 5./4 |
1.25 |
| 7/4 |
1 |
| 6/3 |
2 |
| 4/5 |
0 |
Кроме указанных
операций присутствует ещё операция деления по
модулю. Данная операция используется в целочисленных
арифметических выражениях и аналогична операции
в языке Паскаль: mod. Как и в
операции mod, результат
операции деления по модулю, есть остаток от
деления целого числа, стоящего слева от знака
операции на число, расположенное справа от него.
Например, 13%5 (читается как “13 по модулю 5”) имеет
значение 3, поскольку
справедливо равенство: 13 равно 2*5+3.
Теперь, после знакомства с
основными операциями, следует рассмотреть
порядок выполнения операций в выражениях,
содержащих несколько операций.
Рассмотрим приоритет
операций языка Си. Умножение и деление имеют
более высокий приоритет, чем сложение и
вычитание, поэтому они выполняются первыми. Две
одинаковые по приоритету операции выполняются в
том порядке, который определён записью
выражения. Обычный порядок выполнения операций
– слева направо. (Операция = имеет самый низкий приоритет и, как
уже говорилось, выполняется справа налево). Для
изменения очерёдности выполнения операций
используют круглые скобки. В первую очередь
выполняется действие в скобках; внутри скобок
действуют обычные правила.
Замечание! Для знака минус, большим
приоритетом обладает унарная операция.
Объединение операций и
операндов представляет собой “выражение”.
Простейшее выражение состоит из одного операнда.
Нетрудно заметить, что операнды могут быть
константами, переменными или выражениями.
Каждое выражение, на языке Си,
имеет значение.
Если значение выражения: -5+3 очевидно, то что можно сказать
относительно выражения со знаком “=“? Вот здесь мы сталкиваемся с таким
явлением, которому нет аналога на языке Паскаль.
Выражение со знаком “=” имеет то же значение, что и
переменная, стоящая справа от знака “=”. Эта переменная получает его в
результате вычисления выражения, стоящего
справа от знака. Пример 2+(с=3+5) выглядит
довольно странно, но он полностью соответствует
правилам языка Си, поскольку данное выражение
представляет собой сумму двух подвыражений,
каждое из которых имеет значение.
Не противоречит правилам языка
Си и наличие нескольких операций “=” в одном выражении. Так в выражении a=b=c=3+5, сначала будет подсчитана сумма 3+5 (операция +
имеет более высокий приоритет), а затем результат
сложения будет последовательно присвоен
переменным c, b и а.
Основными элементами языка Си,
как и Паскаля, являются операторы. Операторы
служат основными строительными блоками
программы, так что программа состоит из
последовательности операторов с добавлением
небольшого количества знаков пунктуации и
комментариев. Большинство же операторов состоит
из выражений.
Оператор является законченной
инструкцией для компьютера. В языке Си указанием
на наличие оператора служит символ ; (точка с запятой), стоящий в конце
его.
Законченная инструкция должна
выполнять некоторые действия полностью.
Например, выражение 2+3 не
является законченной инструкцией, а служит лишь
указанием сложить 2 и 3, но не говорит, что делать с
результатом. Инструкция count=2+3 – законченная, т.к. служит указанием
поместить результат в ячейку памяти, помеченную
именем count.
Кроме перечисленных операций, в
отличие от Паскаля, язык Си имеет и ряд
дополнительных операций. Рассмотрим
перечисленные, а так же дополнительные операции
и специальные символы в виде таблицы, сравнивая с
аналогами языка Паскаль.



|