.: [предыдущая | оглавление | следующая] :.

7.2 Символы и байты

Для записи знаков в языке Си служат типы char и unsigned char. Первый – это целое число со знаком, хранящееся в одном байте, второй – без знаковое байтовое число. Эти типы чаще всего используются для манипулирования символами, поскольку коды символов как раз помещаются в байт.

Пояснение. Единственное, что может хранить компьютер, это числа. Поэтому для того, чтобы можно было хранить символы и манипулировать ими, символам присвоены коды – целые числа. Существует несколько стандартов, определяющих, какие коды каким символам соответствуют.

Для английского алфавита и знаков препинания используется стандарт ASCII. Этот стандарт определяет коды от 0 до 127. Для представления русских букв используется стандарт КОИ-8 или CP-1251. В этих стандартах русские буквы кодируются числами от 128 до 255. Таким образом, все символы могут быть представлены в одном байте (максимальное число символов в одном байте –255 ). Для работы с китайским, японским, корейским и рядом других алфавитов одного байта недостаточно, и используется кодировка с помощью двух байтов и, соответственно, тип wchar_t.

Чтобы объявить переменную байтового типа, нужно записать:

char c;//байтовое число со знаком
unsigned char u;//байтовое число без знака

Поскольку байты – это целые числа, то все операции с целыми числами применимы и к байтам.

В кодировке ASCII два следующих оператора эквивалентны:

char c = 68;
char c = 'D';

Первый из них присваивает байтовой переменной c значение числа 68. Второй присваивает этой переменной код латинской буквы D, который в кодировке ASCII равен 68. Для того, чтобы записать произвольное байтовое значение, также используется экранированная последовательность: после обратной дробной черты записывается целое число от 0 до 255.

const char zero = '\0';
const unsigned char bitmask ='\0xFF';
const char tab ='\010';

Следующая программа выведет все печатные символы ASCII в порядке увеличения:

for (char c =32; c<127; c++)
    cout <<c <<"";
.: [предыдущая | оглавление | следующая] :.