Уроки > Тип данных char. Таблица ASCII
Мы не продаём знания — мы ими делимся!

Если для вас это ценно, то поддержите проект.

Ваша поддержка — топливо для новых уроков!

Тип данных char

Как вы уже знаете, тип данных char используется для хранения отдельных символов. Оказывается, кроме символов, в переменную данного типа можно записать целое число. При этом размер этого типа данных всего 256 значений. В переменной данного типа можно хранить значения от 0 до 255 включительно, либо от -128 до 127. Это зависит от вашего компилятора.

Вот посмотрите:

Листинг 1.

#include <stdio.h>
int main(void){
  char ch = 97;

  printf("%d = %c\n",ch,ch);

  return(0);
}

Сейчас поясню, зачем это нужно. В памяти компьютера всё хранится в виде 0 или 1, это нам известно. Чтобы хранить числа, компьютер переводит их в двоичную систему счисления. Но как быть с буквами, знаками препинания? Для этого люди придумали специальные таблицы, которые называются кодировками.

В такой таблице каждому символу сопоставляется определённое число. И уже это число преобразуется в двоичную систему и хранится в памяти компьютера. С кодировками часто бывают проблемы. Они возникают из-за того, что одному числу в разных таблицах могут соответствовать разные символы.

Язык Си использует одну из таких таблиц — таблицу ASCII (аббр. American Standard Code for Information Interchange).

В ней первые числа от 0 до 32 зарезервированы для служебных команд, например, 10 используется для перевода строки, а вот символ с кодом 0 обозначает конец символьной строки. Он нам скоро понадобится.
Вот, посмотрите на следующий пример.

Листинг 2.

#include <stdio.h>
int main(void){
  char ch = 10;

  printf("te%cst\n",ch);
  return(0);
}

А вот результат её работы.

Пример вывода служебного символа на экран

Как видите, символ с кодом 10, действительно, переводит строку (соответствует escape-последовательности \n).

Практика

Исследовательские задачи для хакеров

  1. Проверить как в вашей системе работает тип char. Для этого можете использовать следующую программу:
#include <stdio.h>

int main(void){

  char k = 0;

  for(int i = 0; i < 256; i++){
    k = i;
    printf("k = %d\n", k);
  }

  return 0;
}

Найти в интернете таблицу с символами ASCII. Посмотреть каким символам соответствуют числам от 33 до 127.

  1. Попробуйте вывести слово Hello, используя лишь цифры из таблицы ASCII, без единой переменной.

Дополнительные материалы

  1. пока нет