Arduino

и не только...

YouTube Instagram TikTok Telegram VK

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

= (оператор присваивания)

Присваивание переменной слева от оператора значения переменной, константы или выражения, находящихся справа.

int a = 5;

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

byte b = 379;
Serial.print(b); // 123

Здесь в переменной b окажется значение 123, так как произойдет переполнение типа, так как максимальное значение типа byte - 255.

Оператор присваивания возвращает присвоенное значение, поэтому его вызовы можно объединять:

int a;
int b;
int c;
a = b = c = 15;

Всем трем переменным будет присвоено значение 15.

Ну и последнее: нельзя путать оператор присваивания с оператором равенства, так как это может привести к возникновению

+ (сложение)

Оператор сложения возвращает результат выполнения операции сложения над двумя операндами.

int a = 5;
int b = 7;
int c;
c = a + b; // 12

Причем для вычисления результата будет использован наибольший тип операнда. Например, если оба операнда будут иметь тип int, даже несмотря на то, что тип переменной для сохранения результата будет иметь long, все равно произойдет переполнение:

int a = 32767;
int b = 1;
long c;
c = a + b; // -32768

А вот если олин из операндов будет иметь тип long, то результат будет корректный:

int a = 32767;
long b = 1;
long c;
c = a + b; // 32768

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

Оператор вычитания возвращает результат выполнения операции вычитания над двумя операндами. Результат будет иметь наибольший тип операнда.

int a = 7;
int b = 5;
int c;
c = a - b; // 2

* (умножение)

Оператор умножения возвращает результат выполнения операции умножения над двумя операндами. Результат так же будет иметь наибольший тип операнда.

int a = 3;
int b = 5;
int c;
c = a * b; // 15

/ (деление)

Оператор деления возвращает результат выполнения операции деления над двумя операндами.

int a = 8;
int b = 2;
int c;
c = a / b; // 4

Важно заметить что в случае, если оба операнда имеют тип int, для вычисления результата также будет использован тип int, поэтому при сохранении результата во float сохранен будет целочисленный результат, приведенный к float:

int a = 15;
int b = 2;
float c;
c = a / b; // 7.00

А вот если хотя бы один из операндов будет типа float, то результат будет также типа float:

int a = 15;
float b = 2;
float c;
c = a / b; // 7.50

% (остаток от деления)

Оператор возвращает остаток от деления одного целого (int) операнда на другой:

int a = 15;
int b = 6;
int c;
c = a % b; // 3