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 <<"";
|