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