Главная chevron_right Структура chevron_right Составные операторы chevron_right ++ (increment)

++ (increment)

Оператор ++ увеличивает переменную на 1: x++ возвращает старое значение, ++x — новое. Если результат не используется, обе формы равнозначны.

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

Описание

Оператор инкремента ++ прибавляет единицу к значению переменной. Он существует в двух формах: постфиксной (x++) и префиксной (++x). Разница между ними проявляется только тогда, когда результат оператора используется в выражении — например, присваивается другой переменной или передаётся в функцию.

Синтаксис

  • x{plus}{plus}; // increment x by one and returns the old value of x
  • {plus}{plus}x; // increment x by one and returns the new value of x

Параметры

x: переменная целочисленного типа. Разрешённые типы данных: int, long (в том числе беззнаковые варианты).

Возвращает

  • x++ — возвращает старое значение переменной (до увеличения), затем увеличивает её.
  • ++x — сначала увеличивает переменную, затем возвращает новое значение.

Если результат нигде не используется (оператор стоит отдельной строкой), обе формы работают одинаково — просто прибавляют 1.

Пример кода

    x = 2;
    y = ++x;  // x теперь содержит 3, y содержит 3
    y = x++;  // x содержит 4, но y всё ещё содержит 3

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

  • Счётчики в циклах — классический for (int i = 0; i < 10; i++) использует постфиксный инкремент для перебора значений.
  • Подсчёт событий — например, каждое нажатие кнопки увеличивает счётчик: buttonPresses++.
  • Обход массива — инкремент индекса при последовательном чтении или записи элементов.
  • Конечные автоматы — переход к следующему состоянию через увеличение переменной состояния.

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

  • Если вы просто хотите увеличить переменную на 1, пишите x++ или ++x — разницы нет. Форма имеет значение только когда результат используется в выражении.
  • Будьте внимательны с переполнением: для типа int на большинстве плат Arduino максимальное значение равно 32 767. После него следующий инкремент даст −32 768. Для unsigned int переполнение даёт 0.
  • Не применяйте ++ к переменным типа float или double — оператор для них не предназначен и может давать неожиданные результаты из-за особенностей представления чисел с плавающей точкой.
  • В сложных выражениях вида a = x++ + ++x поведение может быть неочевидным. Для ясности лучше разбивать такие конструкции на отдельные строки.
  • Если показания счётчика кажутся неверными — проверьте, не используете ли вы постфиксную форму там, где ожидаете уже увеличенное значение.

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