int
Тип int хранит целые числа и чаще всего используется в Arduino-скетчах: его размер зависит от платы — 16 бит на ATmega и 32 бита на Due/SAMD.
Полная статья
Описание
Тип int — целочисленный тип данных, который используется чаще всего, когда нужно хранить целые числа: счётчики, показания датчиков, номера пинов, результаты вычислений и так далее.
Размер int зависит от платы:
- На Arduino UNO и других платах на базе ATmega — 16 бит (2 байта). Диапазон значений: от −32 768 до 32 767.
- На Arduino Due и платах на базе SAMD (например, MKR 1000 WiFi и Zero) — 32 бита (4 байта). Диапазон значений: от −2 147 483 648 до 2 147 483 647.
Это важно учитывать, если вы пишете код, который должен работать на разных платах: одно и то же объявление int может вести себя по-разному в зависимости от архитектуры.
Отрицательные числа хранятся в формате дополнительного кода (two's complement): старший бит обозначает знак, остальные биты инвертируются и к результату прибавляется единица. На практике вам не нужно думать об этом — Arduino выполняет арифметику с отрицательными числами автоматически и корректно. Однако при побитовых операциях или смешивании знаковых и беззнаковых типов могут возникнуть неожиданные эффекты. оператор битового сдвига вправо (>>)
Синтаксис
int var = val;
Параметры
var: имя переменной — любой допустимый идентификатор на ваш выборval: начальное значение, которое присваивается переменной при объявлении
Пример кода
Пример создаёт переменную-счётчик, которая увеличивается на 1 при каждом проходе loop() и выводится в Serial Monitor.
int countUp = 0; //создаём целочисленную переменную 'countUp'
void setup() {
Serial.begin(9600); // выводим число через последовательный порт
}
void loop() {
countUp++; //увеличиваем countUp на 1 при каждом проходе цикла
Serial.println(countUp); // выводим текущее значение countUp
delay(1000);
}
Примечания и предупреждения
Переполнение. Если значение переменной выходит за пределы допустимого диапазона, происходит переполнение. Поведение при этом непредсказуемо: переменная может «перескочить» от максимального значения к минимальному или дать совершенно неожиданный результат. Например, на UNO значение 32 767 после прибавления 1 может стать −32 768. Переполнения нужно избегать — следите за диапазоном значений в вычислениях.
Если вам нужно именно такое «кольцевое» поведение, используйте unsigned int.
Где применяется
- Счётчики и циклы — классический сценарий: переменная-счётчик в
forилиwhile. - Показания датчиков — например, результат
analogRead()возвращает значение от 0 до 1023, которое отлично помещается вint. - Хранение координат или позиций — когда значения могут быть отрицательными, в отличие от
unsigned int. - Промежуточные вычисления — арифметика с небольшими целыми числами, где не нужна дробная часть.
Практические замечания
- На UNO максимум для
int— 32 767. Если ваш счётчик или результат вычисления может превысить это значение, используйтеlong. - Если значение всегда неотрицательное и нужен больший диапазон, рассмотрите
unsigned int(0–65 535 на UNO). - При смешивании
intиunsigned intв одном выражении компилятор может неявно привести типы — это частая причина трудноуловимых ошибок. Явное приведение типов помогает избежать сюрпризов. - Если скетч должен одинаково работать на UNO и Due, не полагайтесь на конкретный размер
int. Для гарантированного размера используйте типы из<stdint.h>:int16_tилиint32_t. - Для отладки переполнения удобно выводить значение в Serial Monitor перед и после операции, которая вызывает подозрения.