Константам, встречающимся в программе, приписывается тот или иной тип в со-
ответствии с их видом. Если этот тип по каким-либо причинам не устраивает
программиста, он может явно указать требуемый тип с помощью суффиксов L, 1 (long) и
U, u (unsigned). Например, константа 321 будет иметь тип long и занимать 4 байта. Можно
использовать суффиксы L и U одновременно, например, 0x22UL или 05lu.
Типы short int, long int, signed int и unsigned int можно сокращать до short, long,
signed, и unsigned соответственно.
Символьные данные
Под величину символьного типа отводится количество байт, достаточное для
размещения любого символа из набора символов для данного компьютера, что и
обусловило название типа. Как правило, это 1 байт. Тип char, как и другие целые типы,
может быть со знаком или без знака. В величинах со знаком можно хранить значения в
диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут
находиться в пределах от 0 до 255. Этого достаточно для хранения любого символа из
256-символьного набора ASCII. Величины типа char применяются также для хранения
целых чисел, не превышающих границы указанных диапазонов. Однако Си проводит
различия между символом «1» и числом 1. Как символ единица не может использоваться
в математических операциях, поскольку она не рассматривается в этом случае как
математическая величина. Как число единица участвует в вычислениях, при этом, как вы
скоро увидите, для хранения символа «1» Си отводит объем памяти вполовину меньший,
чем для хранения числа 1.
Расширенный символьный тип (wchar_t)
Тип wchar_t предназначен для работы с набором символов, для кодировки которых
недостаточно 1 байта, например, Unicode. Размер этого типа зависит от реализации; как
правило, он соответствует типу short. Строковые константы типа wchar_t записываются с
префиксом L, например, L"Gates".
Логический тип (bool)
Величины логического типа могут принимать только значения true и false, яв-
ляющиеся зарезервированными словами. Внутренняя форма представления значения
false - 0 (нуль). Любое другое значение интерпретируется как true. При преобразовании к
целому типу true имеет значение 1.
Вещественные числа
Числа, которые могут содержать десятичную часть (вещественные), называются
числами с плавающей точкой (floating-point values). Для работы с ними в языке Си
используется тип данных с плавающей точкой (float). Так как числа с плавающей точкой
могут быть чрезвычайно маленькими или большими, для их записи часто используют
экспоненциальную форму, например, значение числа с плавающей точкой может
равняться 3.4е+38. Расшифровать это можно следующим образом: «передвинуть точку
вправо на 38 пунктов, добавив соответствующее количество нулей». Существуют
дополнительные типы данных для работы в очень широких пределах величин:
float величины от 3.4Е–38 до 3.4Е+38
double величины от 1.7Е–308 до 1.7Е+308
long double величины от 3.4Е–4932 до 1.1Е+4932
Тип данных с плавающей точкой имеет предел точности, диапазон которого
зависит от компилятора. Например, число 6.12345678912345 в пределах допустимого
диапазона для чисел типа float может быть записано компьютером только как 6.12345.
Этот тип, как принято говорить, является типом с одинарной точностью, что означает, что
точность его ограничена пятью или шестью знаками после точки. Тип double принято
называть типом с двойной точностью, он имеет 15–16 знаков после точки.