Главная chevron_right Структура chevron_right Арифметические операторы chevron_right = (assignment operator)

= (assignment operator)

Оператор = записывает результат выражения в переменную — не сравнивает, а именно присваивает: x = 5 + 3 кладёт в x число 8.

Полная статья

Описание

Одиночный знак равенства = в C++ — это оператор присваивания, и его смысл заметно отличается от привычного математического «равно». Он не сравнивает два значения и не утверждает, что они одинаковы. Вместо этого он даёт микроконтроллеру команду: вычислить всё, что стоит справа от знака, и поместить результат в переменную, которая стоит слева.

То есть запись x = 5 + 3 не означает «x равен 8» в математическом смысле — она означает «вычисли 5 + 3 и запиши результат в x». После этой строки x будет содержать 8.

Пример кода

    int sensVal;              // объявляем целочисленную переменную sensVal
    sensVal = analogRead(0);  // сохраняем (оцифрованное) входное напряжение с аналогового пина 0 в SensVal

Где применяется

  • Инициализация переменных — задать начальное значение счётчика, флага или порогового уровня перед основным циклом.
  • Обновление состояния — сохранить новое показание датчика, текущее положение сервопривода или результат вычисления в переменную для последующего использования.
  • Копирование значений — перенести содержимое одной переменной в другую, например сохранить предыдущее состояние кнопки перед считыванием нового.
  • Накопление результата — записывать промежуточный итог в ходе цикла, например суммировать показания АЦП.

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

  1. Тип переменной должен вмещать значение. Если присвоить int-переменной число, выходящее за пределы её диапазона (например, 40 000 для 16-битного int со знаком), значение «переполнится» и окажется неверным. Выбирайте тип с запасом или используйте long, unsigned int и т. д.
  2. Правая часть вычисляется целиком до записи. Выражение x = x + 1 абсолютно корректно: сначала берётся текущее значение x, к нему прибавляется 1, и только потом результат записывается обратно в x.
  3. Не путайте = и ==. Одиночный = присваивает значение, двойной == сравнивает. Ошибка if (x = 5) вместо if (x == 5) — одна из самых распространённых в C++: первый вариант всегда истинен (и заодно меняет значение x), второй — проверяет условие. Большинство компиляторов выдают предупреждение на такую конструкцию.
  4. Присваивание возвращает значение. В C++ оператор = сам является выражением и возвращает присвоенное значение. Это позволяет писать цепочки вроде a = b = 0, но злоупотреблять такой записью не стоит — она снижает читаемость кода.
  5. Отладка через Serial Monitor. Если переменная ведёт себя неожиданно, добавьте Serial.println(x) сразу после присваивания — это быстро покажет, какое значение реально попало в переменную.

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