Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования на языке C_4.docx
Скачиваний:
41
Добавлен:
25.03.2016
Размер:
299.55 Кб
Скачать

Операция вычитания: -

Выполнение операции вычитания приводит к вычитанию числа, расположенного справа от знака -, из числа, стоящего слева от этого знака. Оператор

n = 163.00 - 100.00;

присваивает переменной n значение 63.00.

Операция изменения знака: -

Знак минус используется для указания или изменения алгебраического знака некоторой величины. Например, в результате выполнения последовательности операторов

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

В результате деления целых чисел происходит отсечение дробной части. Когда мы смешиваем целые числа и числа с плавающей точкой, результат будет таким же, как если бы оба операнда были числами с плавающей точкой. В этом случае перед делением целое преобразуется в число с плавающей точкой. Для того чтобы понять, что происходит в тех случаях, когда в одном операторе используется несколько операций, рассмотрим порядок выполнения операций. Совершенно очевидно, что изменение порядка выполнения действий может приводить к различным результатам. В языке Си каждой операции назначается уровень старшинства. Умножение и деление имеют более высокий уровень, чем сложение и вычитание, поэтому они выполняются первыми. Если же две операции имеют один и тот же уровень старшинства, они выполняются в том порядке, в котором присутствуют в операторе. Для большинства операций обычный порядок - слева направо. Операция = является исключением из этого правила. Многие программисты предпочитают представлять порядок вычислений с помощью дерева выражений. Например, выражение

(a+b)*c

будет выглядеть так:

*

/ \

+ c

a b

Мы можем составить таблицу правил описанных нами операций. В дальнейшем мы приведем таблицу, где содержатся правила, относящиеся ко всем операциям языка Си.

Таблица 1.1. Операции в порядке уменьшения уровня старшинства

Операции

Порядок вычисления

( )

слева направо

- (унарный)

слева направо

* /

слева направо

+ - (вычитание)

слева направо

=

справа налево