Когда заканчивается диапазон 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, если числа остаются небольшими.
Задание
СреднеСтартовый код прибавляет 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);
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Первые схемы
2Общение с компьютером
Привет, Serial MonitorPrint и PrintlnВывод чиселВаша первая переменнаяСчитаем вверхКогда заканчивается диапазон intПотренируйтесь самостоятельно: Песочница Arduino