+ (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(), чтобы сдвинуть нулевую точку.
  • Вычисление позиции или времени: прибавление шага к текущей позиции сервопривода или к временной метке.
  • Формирование адресов и индексов в массивах при обходе буферов.

Практические замечания

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

Полезные материалы