short

Тип short хранит 16-битное целое со знаком (от −32 768 до 32 767) и одинаково ведёт себя на всех платах Arduino, в отличие от int.

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

Описание

Тип short — это целочисленный тип данных со знаком, занимающий 16 бит (2 байта) памяти. На всех платах Arduino — как на базе ATMega, так и на ARM-платформах — размер short одинаков и не зависит от архитектуры процессора.

Диапазон допустимых значений: от -32 768 до 32 767 (то есть от -2¹⁵ до 2¹⁵ − 1).

Если значение выходит за эти границы, происходит целочисленное переполнение: число «оборачивается» на противоположный конец диапазона. Например, 32 767 + 1 даст -32 768. Это не ошибка компилятора — просто стандартное поведение знаковой арифметики.

Синтаксис

short var = val;

Параметры

  • var — имя переменной, которую вы объявляете.
  • val — начальное значение, присваиваемое переменной; должно укладываться в диапазон -32 768 … 32 767.

Пример кода

    short ledPin = 13

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

  • Счётчики и накопители, значения которых заведомо не выйдут за ±32 767 — например, показания датчика температуры в десятых долях градуса.
  • Экономия оперативной памяти на платах с малым объёмом ОЗУ (Arduino Uno, Nano), когда int избыточен, а byte не хватает из-за знака.
  • Промежуточные вычисления с данными, поступающими по протоколам, где значения передаются именно в 16-битном знаковом формате.

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

  • На большинстве AVR-плат Arduino тип int тоже занимает 16 бит, поэтому short и int там взаимозаменяемы. На ARM-платах (например, Arduino Due, MKR-серия) int уже 32-битный, а short по-прежнему 16-битный — это важно учитывать при переносе кода.
  • Следите за переполнением: если в переменную типа short записать значение вне диапазона, компилятор не выдаст ошибку, но результат будет неожиданным.
  • При смешанной арифметике с int или long компилятор автоматически расширяет short до более широкого типа — это нормально и безопасно.
  • Если нужно гарантированно 16-битное целое вне зависимости от платформы, используйте тип int16_t из заголовка <stdint.h> — он явно фиксирует размер.

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