Menu
CoddyTech

Когда заканчивается диапазон int

Часть раздела Первые схемы путешествия по Arduino на Coddy. Урок 12 из 22.

Переменная хранится в фиксированном количестве битов — крошечных переключателей в памяти платы, которые могут быть включены или выключены. В Uno тип int занимает 16 бит, поэтому он может хранить только числа от -32,768 до 32,767.

Если выйти за верхнюю границу, значение не увеличится: оно перейдёт к нижней границе. 32,767 плюс 1 становится -32,768. Это называется переполнением, и скетч не выдаёт предупреждения.

Для бо́льших чисел используйте тип с бо́льшим количеством битов:

long big = 100000;           // от -2,147,483,648 до 2,147,483,647
unsigned long huge = 3000000000;  // от 0 до 4,294,967,295

Тип long занимает 32 бита. Тип unsigned long тоже занимает 32 бита, но не поддерживает отрицательные числа, поэтому его верхняя граница вдвое выше: он подходит для счётчиков и времени.

Тип long занимает вдвое больше памяти, чем int, а в Uno для переменных доступно всего 2048 байт, поэтому используйте int, если числа остаются небольшими.

challenge icon

Задание

Средне

Стартовый код прибавляет 1000 к count двадцать раз в секунду. Нажми Run и смотри, как после 32 000 значение становится отрицательным.

  • измени тип count, чтобы он мог считать дальше 100 000

Затем нажми Check.

Попробуйте сами

int count = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  count = count + 1000;
  Serial.println(count);
  delay(50);
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Первые схемы

Потренируйтесь самостоятельно: Песочница Arduino