Skip to content

Арифметические операции

Yuriy Syrovetskiy edited this page Dec 26, 2017 · 1 revision

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

Table of Contents

Унарные арифметические операции

Унарный минус:

- выражение
В результате вычисления результата такой операции получается значение, симметричное относительно ноля значению выражения-аргумента.

Унарный плюс:

+ выражение
Значение равно значению выражения аргумента. Эта операция добавлена для удобства записи как аналог унарного минуса.

Бинарные арифметические операции

Мультипликативные операции

Умножение:

выражение-1 * выражение-2
Деление:
выражение-1 / выражение-2
Остаток от деления:
выражение-1 % выражение-2
Achtung!!!
Делить на ноль и вычислять остаток от деления на ноль нельзя!

Если в момент вычисления то, на что вы делите, окажется равным нулю, программа завершится аварийно!

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

В случае операций с нецелыми числами вместо аварийного завершения может получаться специальное значение. В любом случае деления на ноль надо избегать.

Конечно, написать

x / 0
можно, скорее всего, по невнимательности, но если написано:
x / (y + z)
то ноль может получиться при опеределенных значениях y и z. По-хорошему, программа должна быть написана так, чтобы не допускать, чтобы возникали такие значения, что при выполнении операции деления или вычисления остатка в знаменателе мог получиться ноль. Как это сделать – отдельный вопрос, мы остановимся на нем в ближайшем будущем.
Achtung!!!
Деление выполняется как целочисленное деление, если оба выражения-аргумента имеют целочисленный тип, т.е. результатом будет целое число! (остаток от деления отбрасывается, его можно вычислить отдельно с помощью операции %).

Это означает, что если написать выражение:

1/2
То его значением будет целочисленный 0.

Если написать

1.0/2
или
1/2.0
или
1.0/2.0
то значением такого выражения будет 0.5.

Если написать выражение:

1/m
то если m – это переменная целочисленного типа (т. е., например, типа int), то, если значение m – не 1 или -1, то результатом будет 0. Чтобы в этом выражении использовалось не целочисленное деление, надо либо вместо целочисленной константы 1 использовать константу 1.0, либо использовать операцию приведения типа, с которой мы познакомимся отдельно (см. Операция приведения типа).
Achtung!!!
Обратите внимание, что операции возведения в степень в языке Си нет!

Вы могли столкнуться с тем, что в некоторых языках операция возведения в степень записывается с помощью знака ^. В языке Си тоже есть операция, которая записывается с помощью ^, но это совсем не возведение в степень! (Это операция побитового исключающего "или", мы познакомимся с ней позже).

Аддитивные операции

Сложение:

выражение-1 + выражение-2
Вычитание:
выражение-1 - выражение-2
Обратите внимание, что унарный плюс и бинарный плюс – это разные по смыслу операции, хотя и записываются с помощью одного и того же знака операции. Точно так же унарный и бинарный минус – это разные операции. Так какую операцию означает плюс и минус – унарную или бинарную? Это определяется контекстом, т. е. тем, как использован знак операции.
Clone this wiki locally