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>— он явно фиксирует размер.