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 — объект с динамической памятью и собственными методами.

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