Символы как целые числа
Значения ASCII
«Символы как целые числа» — бесплатный урок C Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 4 уроков всего.
Символы — это числа
В C char — это всего лишь небольшое целое число. Каждый символ имеет числовое значение, определённое таблицей ASCII.
Буква 'A' хранится как число 65, 'B' — как 66 и так далее.
#include <stdio.h>
int main(void) {
char c = 'A';
printf("The character %c has value %d\n", c, c);
return 0;
}Вывод значения ASCII
Используйте спецификатор формата %d, чтобы вывести char как целое число, и %c, чтобы вывести его как символ.
Одну и ту же переменную можно рассматривать обоими способами.
#include <stdio.h>
int main(void) {
char letter = 'z';
printf("As char: %c\n", letter);
printf("As int: %d\n", letter);
return 0;
}У цифр тоже есть коды
Символ '0' — это не число 0. Его значение в ASCII равно 48.
Коды символов цифр от '0' до '9' последовательно находятся в диапазоне от 48 до 57.
#include <stdio.h>
int main(void) {
printf("'0' = %d\n", '0');
printf("'9' = %d\n", '9');
return 0;
}Преобразование char в цифру
Поскольку цифры расположены последовательно, можно преобразовать символ цифры в его числовое значение, вычтя '0'.
'7' - '0' равно 7.
#include <stdio.h>
int main(void) {
char d = '7';
int value = d - '0';
printf("The digit value is %d\n", value);
return 0;
}Арифметика над символами
Поскольку char — это целые числа, с ними можно выполнять арифметические операции. Прибавление 1 к 'A' даёт код 'B'.
Это работает, потому что буквы алфавита расположены в ASCII последовательно.
#include <stdio.h>
int main(void) {
char c = 'A';
char next = c + 1;
printf("After A comes %c\n", next);
return 0;
}Цикл по алфавиту
Можно выполнить цикл от 'a' до 'z', используя char в качестве счётчика цикла.
Цикл сравнивает коды символов так же, как числа.
#include <stdio.h>
int main(void) {
for (char c = 'a'; c <= 'z'; c++) {
printf("%c", c);
}
printf("\n");
return 0;
}Разница между регистрами
Заглавные и строчные буквы в ASCII разделены 32 позициями. 'a' — это 97, а 'A' — 65.
Поэтому 'a' - 'A' равно 32.
#include <stdio.h>
int main(void) {
printf("'A' = %d\n", 'A');
printf("'a' = %d\n", 'a');
printf("Gap = %d\n", 'a' - 'A');
return 0;
}Ручное преобразование регистра
Зная, что разница равна 32, можно преобразовать строчную букву в заглавную, вычтя 32.
Именно это toupper выполняет внутри.
#include <stdio.h>
int main(void) {
char lower = 'm';
char upper = lower - 32;
printf("%c becomes %c\n", lower, upper);
return 0;
}Специальные символы
У управляющих символов тоже есть коды. Символ новой строки '\n' — это 10, табуляция '\t' — 9, а нулевой терминатор '\0' — 0.
Код пробела — 32.
#include <stdio.h>
int main(void) {
printf("newline = %d\n", '\n');
printf("tab = %d\n", '\t');
printf("space = %d\n", ' ');
return 0;
}char хранит небольшие числа
Обычно char хранит значения от -128 до 127 (со знаком) или от 0 до 255 (без знака).
В char можно напрямую хранить небольшие целые числа.
#include <stdio.h>
int main(void) {
char small = 100;
small = small + 5;
printf("small = %d\n", small);
return 0;
}Создание сдвига Цезаря
Объединив эти идеи, можно создать простой шифр Цезаря, который сдвигает каждую букву на фиксированное число позиций с помощью арифметики над символами.
Здесь мы сдвигаем одну букву вперёд на 3 позиции.
#include <stdio.h>
int main(void) {
char c = 'x';
char shifted = 'a' + (c - 'a' + 3) % 26;
printf("%c shifted by 3 = %c\n", c, shifted);
return 0;
}Быстрая проверка
Проверьте, насколько хорошо Вы поняли представление символов как целых чисел.
Итоги
Вы узнали, что в C:
char— это небольшое целое число, содержащее код ASCII.%cвыводит его как символ, а%d— как число.- Цифры
'0'-'9'и буквы расположены последовательно, что позволяет выполнять арифметические операции. c - '0'преобразует цифру типа char в её числовое значение, а разница между регистрами равна 32.
Часто задаваемые вопросы
Урок «Символы как целые числа» бесплатный?
Да — полный текст урока «Символы как целые числа» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 4 уроков всего.
Чему я научусь в уроке «Символы как целые числа»?
Значения ASCII Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C Academy?
Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Символы как целые числа»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C Academy?
Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Символы как целые числа
- Библиотека ctype
- Чтение символов
- Создание утилит для символов