char
Тип char хранит один символ как число по таблице ASCII — занимает 8 бит и позволяет сравнивать, читать из Serial и выполнять арифметику над символами.
Полная статья
Описание
Тип char предназначен для хранения одного символа — буквы, цифры, знака препинания или управляющего символа. В исходном коде символьные значения записываются в одинарных кавычках: 'A', 'z', '!'. Если нужно хранить несколько символов подряд, используйте строки в двойных кавычках ("ABC"), но это уже другой тип данных.
Внутри контроллера символ хранится как целое число — его код по таблице ASCII. Конкретные коды можно посмотреть в диаграмма ASCII. Это означает, что с символами можно выполнять арифметику: например, 'A' + 1 даёт 66, потому что ASCII-код заглавной A равен 65. Подробнее о преобразовании символов в числа — в Serial.println().
Тип char занимает не менее 8 бит. Он знаковый, то есть может хранить значения от −128 до 127. Если вам нужен символ — используйте именно char, не подменяйте его другими типами. Для беззнакового однобайтового числа (0–255) есть отдельный тип byte.
Синтаксис
char var = val;
Параметры
var: имя переменнойval: значение, которое нужно присвоить переменной — символьный литерал в одинарных кавычках ('A') или целое число в диапазоне −128…127
Пример кода
char myChar = 'A';
char myChar = 65; // оба варианта эквивалентны
Где применяется
- Чтение одного символа из Serial-порта:
char c = Serial.read(); - Разбор коротких текстовых команд посимвольно
- Формирование строк в массиве
char[]для вывода на LCD - Сравнение принятого символа с заданным:
if (c == 'Y') { ... }
Практические замечания
- Символьный литерал записывается в одинарных кавычках. Двойные кавычки — это строка (
char*илиString), а не одиночный символ. - Поскольку
charзнаковый, значения выше 127 (например, кириллица в однобайтовых кодировках) будут отрицательными. Если вы работаете с такими кодами, используйтеbyteили явное приведение типа. - Арифметика с символами полезна для проверки диапазонов:
if (c >= 'a' && c <= 'z')— удобный способ определить, является ли символ строчной латинской буквой. - При выводе через
Serial.print()значение типаcharотображается как символ, а не как число. Чтобы увидеть числовой код, приведите его кint:Serial.print((int)c);. - Не путайте
charсString. Типchar— это один символ и одна ячейка памяти;String— объект с динамической памятью и собственными методами.