Обычно тип long имеет большую длину, чем short, а длина типа int совпадает с длиной одного из этих типов. Например, старые основанные на DOS системы для IBM PC предоставляли 16-битные типы short и int и 32-битный тип long, а позже системы, основанные на Windows 95, предлагали 16-битный тип short и 32-битные типы int и long.
При желании для любого типа со знаком можно указывать ключевое слово signed, делая явным тот факт, что этот тип поддерживает знак.
Целые без знака
Такие типы хранят только нулевое или положительные значения. Это расширяет диапазон до большего возможного положительного числа. Указывайте ключевое слово unsigned перед желаемым типом: unsigned int, unsigned long, unsigned short. Одиночное ключевое unsigned означает то же, что и unsigned int.
Символы
Ими являются типографские символы, такие как а, & и +. По определению тип char для представления символа использует 1 байт памяти. Исторически сложилось так, что байт символа чаще всего имеет длину 8 битов, но он может быть длиной 16 битов или больше, если это необходимо для представления базового набора символов.
• char — ключевое слово для этого типа. В одних реализациях применяется тип char со знаком, в других он без знака. Язык С позволяет использовать ключевые слова signed и unsigned для указания нужной формы.
Данные в языке С 107
Булевские значения
Булевский тип представляет значения true (истина) и false (ложь); в языке С для представления true применяется 1, а для представления false — 0.
• _Bool — ключевое слово для этого типа. Он является типом int без знака и должен быть настолько большим, чтобы обеспечить хранение значений из диапазона от 0 до 1.
Вещественные числа с плавающей запятой
Эти типы могут иметь как положительные, так и отрицательные значения.
• float — базовый тип данных с плавающей запятой в системе; он может представлять, по меньшей мере, шесть значащих цифр с заданной точностью.
• double — (возможно) большая единица для хранения чисел с плавающей запятой. Этот тип может разрешать большее количество значащих цифр (минимум 10, но обычно больше) и, возможно, большие значения показателя степени, чем тип float.
• long double — (возможно) еще большая единица для хранения чисел с плавающей запятой. Этот тип может разрешать большее количество значащих цифр и, возможно, большие значения показателя степени, чем тип double.
Комплексные и мнимые числа с плавающей запятой
Мнимые типы являются необязательными. Вещественные и мнимые компоненты основаны на соответствующих вещественных типах:
• float _Complex
• double _Complex
• long double _Complex
• float _Imaginary
• double _Imaginary
• long double _Imaginary
Сводка: объявление простой переменной
1. Выберите необходимый тип данных.
2. Выберите имя для переменной, включающее разрешенные символы.
3. Применяйте следующий формат для оператора объявления:
специфика тор-типа имя-переменной;
Компонент спецификатор-типа образуется из одного или большего количества ключевых слов для типов; вот примеры объявлений:
int erest;
unsigned short cash;
4. Вы можете объявлять сразу несколько переменных одного и того же типа, разделяя имена переменных запятыми. Например:
char ch, init, ans;
5. Вы можете инициализировать переменную в операторе объявления:
float mass = 6.0Е24;
108 Глава 3
Размеры типов
Какие размеры типов используются в вашей системе? Чтобы выяснить это, попробуйте выполнить программу, показанную в листинге 3.8.
Листинг 3.8. Программа typesize.c

В языке С имеется встроенная операция sizeof, которая возвращает размер типа в байтах. Для такого применения sizeof в стандартах С99 и C11 предоставляется спецификатор %zd. Компиляторы, несовместимые с этими стандартами, могут потребовать вместо него спецификатор %u или %lu. Ниже показан пример вывода программы
typesize.c:
Тип int имеет размер 4 байт(ов).
Тип char имеет размер 1 байт(ов) .
Тип long имеет размер 8 байт(ов) .
Тип long long имеет размер 8 байт(ов) .
Тип double имеет размер 8 байт(ов).
Тип long double имеет размер 16 байт(ов).
Эта программа находит размеры только шести типов, но вы легко можете ее модифицировать, чтобы она определяла размер любого другого интересующего типа. Обратите внимание, что размером типа char обязательно будет 1 байт, потому что в языке С размер одного байта определяется в терминах char. Таким образом, в системе с 16-битным типом char и 64-битным double операция sizeof сообщит, что тип double имеет размер 4 байта. Для получения более подробной информации о предельных размерах типов можете просмотреть заголовочные файлы limits.h и float.h. (Эти два файла обсуждаются в следующей главе.)
Читать дальше