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

3.2.8. Арифметические операторы и операторы присваивания

Арифметические операторы используются для выполнения арифметических операций над константами и переменными. Комбинация переменных, числовых констант и вызовов функций, объединенных арифметическими операторами, называется арифметическим выражением.

Результат вычисления арифметического выражения может быть присвоен переменной с помощью оператора присваивания – символа "=", например, i=x.

Арифметические операторы языка C приведены в табл. 3.1.6.

Табл. 3.1.6. Арифметические операторы языка C

Оператор

Действие

+

Присваивание переменной положительного значения.

-

Присваивание переменной отрицательного значения.

+

Сложение.

-

Вычитание.

*

Умножение.

/

Деление.

%

Определение остатка от деления целых чисел.

++

Увеличение значения переменной на единицу.

--

Уменьшение значения переменной на единицу.

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

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

Операция вычисления остатка от деления (операция "%") определена только для целых чисел. Эта операция возвращает остаток от деления первого числа на второе, причем результат будет иметь тот же знак, что и делимое, например, результат операции 5%3 будет равен 2, а результат операции

(-7)%(-4)

будет равен -3.

Знаки операции инкремента и декремента могут размещаться как до, так и после переменной. Эти варианты называются соответственно префиксной и постфиксной записью этой операции. Знак операции в префиксной записи возвращает значение своего операнда после вычисления выражения. При постфиксной записи знак операции сначала воз­вращает значение своего операнда и только после этого вычисляет инкремент или декремент, например:

int x = 1, y, z;

y = ++x;

z=x++;

Переменной y будет присвоено значение 2, поскольку сначала значение x будет увеличено на 1, а затем результат будет присвоен переменной y. Переменной z будет присвоено значение 1, поскольку сначала переменной z будет присвоено значение, а затем значение x будет увеличено на 1. В обоих случаях новое значение переменной x будет равно 2.

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

Операции в арифметическом выражении выполняются слева направо, однако в C, как и в других языках программирования существует приоритетность выполнения операций, т.е. одни операции в арифметическом выражении выполняются раньше других, независимо от их места в выражении.

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

Так, в выражении:

x = a+b*c;

сначала будет вычислено выражение b*c, а затем сумма значения переменной a и значения вычисленного выражения, поскольку приоритет операции умножения выше, чем приоритет операции сложения. В выражении

x = (a+b)*c;

сначала будет вычислена сумма значений a и b (поскольку они заключены в скобки), а затем полученный результат будет умножен на значение переменной c.

Примеры арифметических выражений и операции присваивания:

speed = 5.5;

time = 4;

distance = speed * time;

distance = (speed ++)*time;

x =(a+b)/y;

В языке C оператор присваивания может быть простым (символ "=") или составным (знак операции и символ "=" и). В последнем случае запись:

переменная знак-операции = выражение

эквивалентна следующей записи

переменная = переменная знак-операции (выражение)

Например, запись x*=y+1 эквивалентна записи x=x*(y+1).