+ (addition)
Оператор + складывает два значения и возвращает сумму; важно следить за типами операндов, чтобы избежать переполнения или потери дробной части.
Полная статья
Описание
Оператор + выполняет сложение двух значений. Это одна из четырёх базовых арифметических операций, доступных в Arduino. Результат вычисления — сумма двух операндов, которую обычно сохраняют в переменную.
Синтаксис
sum = operand1 + operand2;
Параметры
sum: переменная, в которую записывается результат. Допустимые типы данных:int,float,double,byte,short,long.operand1: первый операнд — переменная или константа. Допустимые типы данных:int,float,double,byte,short,long.operand2: второй операнд — переменная или константа. Допустимые типы данных:int,float,double,byte,short,long.
Пример кода
int a = 5;
int b = 10;
int c = 0;
c = a + b; // переменная 'c' получает значение 15 после выполнения этого оператора
Где применяется
- Подсчёт накопленных значений: суммирование показаний датчиков за несколько циклов.
- Смещение диапазона: прибавление константы к результату
analogRead(), чтобы сдвинуть нулевую точку. - Вычисление позиции или времени: прибавление шага к текущей позиции сервопривода или к временной метке.
- Формирование адресов и индексов в массивах при обходе буферов.
Практические замечания
- Переполнение типа. Если результат выходит за пределы диапазона переменной
sum, значение «перекручивается». Например, дляintмаксимум — 32 767: прибавив 1, вы получите -32 768. Чтобы избежать этого, используйте тип с бо́льшим диапазоном, напримерlong. - Смешанные типы и плавающая точка. Если хотя бы один из операндов имеет тип
floatилиdouble, всё выражение вычисляется в арифметике с плавающей запятой. Это важно учитывать при смешивании целых и дробных значений. - Потеря дробной части. Если оба операнда —
floatилиdouble, но переменнаяsumобъявлена как целочисленный тип (int,longи т. д.), дробная часть результата молча отбрасывается без округления. Чтобы сохранить точность, объявляйтеsumкакfloatилиdouble. - Тип результата определяется типом операндов. Если оба операнда —
int, результат тожеint, даже если присваивается переменной типаlong. Чтобы принудительно использовать нужный тип, применяйте явное приведение:(long)operand1 + operand2. - Отладка через Serial Monitor. Если сумма выглядит неожиданно, выведите оба операнда и результат отдельно — это быстро покажет, произошло ли переполнение или потеря дробной части.
float a = 5.5;
float b = 6.6;
int c = 0;
c = a + b; // переменная 'c' хранит значение 12, а не ожидаемую сумму 12.1