Главная > Уроки > Тип данных char

Записывайся на этот курс на Stepike!

Тип данных 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);
}

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

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

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

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

Сохрани в закладки или поддержи проект.

Практика

Решите предложенные задачи:

Для удобства работы сразу переходите в полноэкранный режим

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

  1. Проверить как в вашей системе работает тип char. Для этого можете использовать следующую программу:
    #include <stdio.h>
    
    int main(void){
      
      char k = 0;
    
      for(int i = 0; i < 255; i++){
        k = i;
        printf("k = %d\n", k);
      }
    
      return 0;
    }
  2. Найти в интернете таблицу с символами ASCII. Посмотреть каким символам соответствуют числам от 33 до 127.

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

  1. пока нет

Оставить комментарий

Чтобы код красиво отображался на странице заключайте его в теги [code] здесь писать код [/code]

Комментарии

Николай Евсюков
В первой исследовательской задаче для хакеров 2 ошибки
1.
printf("k = %d
", k);
Должно быть
printf("k = %d", k);

2. for(int i = 0; i < 255; i++)
Должно быть
for(int i = 0; i < 256; i++)
Чтобы захватить 255 (у нас же от 0 до 255 предполагается.)

3. Предположу что имелось ввиду вывести данные из ASCII таблицы.
Я предлагаю так
printf("k(%d) = %c, ", i, k);
так видно какой цифре - что соответствует. Безликая К ни о чем не говорит.
KaDeaT
Добрый день, Николай.

Во-первых, спасибо за внимательность. Ошибка, действительно, была. Это ошибка под номером один, которую вы указали.

Во-вторых, 2-ое и 3-е замечания это не ошибки. То, что вы указывается это отдельная маленькая задачка. Но суть написанной задачи была в том, чтобы понять является ли в вашей системе по умолчанию тип char знаковым или беззнаковым. В зависимости от этого вывод будет либо от 0 до 255, либо от 0 до 127 а потом отрицательные числа от -128 до -1.
Lovelace Ada
У вас 255 (или -1) не попадет в вывод, все вам правильно написали
wop
В исследовательской задаче №1 не выводится -1