Главная chevron_right Переменные и константы chevron_right Типы данных chevron_right unsigned char

unsigned char

unsigned char — однобайтовый беззнаковый тип из C/C++ для чисел 0–255, полный аналог byte; в Arduino-коде предпочтительнее использовать byte.

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

Описание

unsigned char — стандартный тип языка C/C++, занимающий ровно 1 байт памяти и хранящий целые числа от 0 до 255. В мире Arduino у него есть более удобный псевдоним — byte, который делает то же самое и считается предпочтительным для единообразия кода на Arduino. Если вы пишете скетч с нуля, используйте byte; unsigned char пригодится, когда вы портируете код из чистого C/C++ или работаете с библиотеками, написанными в этом стиле.

Тип не хранит отрицательных значений. Если попытаться записать число больше 255, оно «переполнится» и обернётся с начала диапазона (256 превратится в 0, 257 — в 1 и так далее).

Синтаксис

unsigned char var = val;

Параметры

  • var: имя переменной — любой допустимый идентификатор C++
  • val: начальное значение в диапазоне 0–255; если значение выходит за пределы, компилятор может выдать предупреждение, а результат окажется непредсказуемым

Пример кода

    unsigned char myChar = 240;

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

  • Работа с байтовыми буферами — хранение отдельных байт при чтении из Serial, SPI или I2C.
  • Яркость и цвет — значения ШИМ (analogWrite) и компоненты RGB лежат именно в диапазоне 0–255.
  • Экономия памяти — когда массив хранит небольшие неотрицательные числа и каждый байт оперативной памяти на счету.
  • Совместимость с C-кодом — портирование библиотек и примеров, написанных на чистом C.

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

  • На платах Arduino unsigned char и byte занимают одинаковый объём памяти и ведут себя идентично — выбор между ними чисто стилистический.
  • Будьте внимательны при арифметике: результат выражения вроде (unsigned char)(200 + 100) переполнится и даст 44, а не 300.
  • Если переменная участвует в сравнении с отрицательным числом типа int, компилятор приведёт типы автоматически, но результат может удивить — лучше явно контролировать диапазон значений.
  • При выводе в Serial.print() значение будет напечатано как число, а не как символ. Чтобы вывести символ, используйте Serial.write() или приведение к char.

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