Знак минус используется для указания или изменения алгебраического знака некоторой величины. Например, в результате выполнения последовательности операторов
teg = -15;get = -teg;переменной get будет присвоено значение 15. Когда знак используется подобным образом, данная операция называется "унарной". Такое название указывает на то, что она имеет дело только с одним операндом.
Пример:
x = -x;Операция изменяет алгебраический знак x.
Операция умножения: *
Операция умножения обозначается знаком *. При выполнении оператора
z = 3 * xзначение переменной x умножается на 3, и результат присваивается переменной z.
Операция деления: /
В языке Си символ / указывает на операцию деления. Величина, стоящая слева от этого знака, делится на величину, расположенную справа от этого знака. Например, в результате выполнения оператора
l = 126.0 / 2.0;переменной l будет присвоено значение 63.0. Над данными целого типа операция деления производится не так, как над данными с плавающей точкой: в первом случае результат будет целым числом, а во втором - числом с плавающей точкой. В языке Си принято правило, согласно которому дробная часть у результата деления целых чисел отбрасывается. Это действие называется "усечением".
|
|
Рассмотрим пример, как выполняется усечение и чем деление целых чисел отличается от деления чисел с плавающей точкой:
main(){ printf("деление целых: 5/4 это %d \n", 5/4); printf("деление целых: 6/3 это %d \n", 6/3); printf("деление целых: 7/4 это %d \n", 7/4); printf("деление чисел с плавающей точкой: 7./4. это %2.2f \n", 7./4.); printf("смешанное деление: 7./4 это %2.2f \n", 7./4);}Последний пример на использование смешанных типов, т.е. деление вещественного числа на целое. Язык Си менее строго подходит к подобным вопросам, и позволяет выполнять такие операции.
! | Смешения типов следует избегать! |
Результат выполнения указанной программы:
деление целых: 5/4 это 1 деление целых: 6/3 это 2 деление целых: 7/4 это 1 деление чисел с плавающей точкой: 7./4. это 1.75 смешанное деление: 7./4 это 1.75В результате деления целых чисел происходит отсечение дробной части. Когда мы смешиваем целые числа и числа с плавающей точкой, результат будет таким же, как если бы оба операнда были числами с плавающей точкой. В этом случае перед делением целое преобразуется в число с плавающей точкой. Для того чтобы понять, что происходит в тех случаях, когда в одном операторе используется несколько операций, рассмотрим порядок выполнения операций. Совершенно очевидно, что изменение порядка выполнения действий может приводить к различным результатам. В языке Си каждой операции назначается уровень старшинства. Умножение и деление имеют более высокий уровень, чем сложение и вычитание, поэтому они выполняются первыми. Если же две операции имеют один и тот же уровень старшинства, они выполняются в том порядке, в котором присутствуют в операторе. Для большинства операций обычный порядок - слева направо. Операция = является исключением из этого правила. Многие программисты предпочитают представлять порядок вычислений с помощью дерева выражений. Например, выражение
|
|
будет выглядеть так:
* / \ + c a bМы можем составить таблицу правил описанных нами операций. В дальнейшем мы приведем таблицу, где содержатся правила, относящиеся ко всем операциям языка Си.
Таблица 1.1. Операции в порядке уменьшения уровня старшинства | |
Операции | Порядок вычисления |
() | слева направо |
- (унарный) | слева направо |
* / | слева направо |
+ - (вычитание) | слева направо |
= | справа налево |