Книга: Язык программирования Си. Издание 3-е, исправленное
2.2 Типы и размеры данных
2.2 Типы и размеры данных
В Си существует всего лишь несколько базовых типов:
char - единичный байт, который может содержать один символ из допустимого символьного набора;
int - целое, обычно отображающее естественное представление целых в машине;
float - число с плавающей точкой одинарной точности;
double - число с плавающей точкой двойной точности.
Имеется также несколько квалификаторов, которые можно использовать вместе с указанными базовыми типами. Например, квалификаторы short (короткий) и long (длинный) применяются к целым:
short int sh;
long int counter;
В таких объявлениях слово int можно опускать, что обычно и делается. Если только не возникает противоречий со здравым смыслом, short int и long int должны быть разной длины, а int соответствовать естественному размеру целых на данной машине. Чаще всего для представления целого, описанного с квалификатором short, отводится 16 бит, с квалификатором long - 32 бита, а значению типа int - или 16, или 32 бита. Разработчики компилятора вправе сами выбирать подходящие размеры, сообразуясь с характеристиками своего компьютера и соблюдая следующие ограничения: значения типов short и int представляются по крайней мере 16 битами; типа long - по крайней мере 32 битами; размер short не больше размера int, который в свою очередь не больше размера long.
Квалификаторы signed (со знаком) или unsigned (без знака) можно применять к типу char и любому целочисленному типу. Значения unsigned всегда положительны или равны нулю и подчиняются законам арифметики по модулю 2n, где n - количество бит в представлении типа. Так, если значению char отводится 8 битов, то unsigned char имеет значения в диапазоне от 0 до 255, a signed char - от -128 до 127 (в машине с двоичным дополнительным кодом). Являются ли значения типа просто char знаковыми или беззнаковыми, зависит от реализации, но в любом случае коды печатаемых символов положительны.
Тип long double предназначен для арифметики с плавающей точкой повышенной точности. Как и в случае целых, размеры объектов с плавающей точкой зависят от реализации; float, double и long double могут представляться одним размером, а могут - двумя или тремя разными размерами.
Именованные константы для всех размеров вместе с другими характеристиками машины и компилятора содержатся в стандартных заголовочных файлах ‹limits.h› и ‹float.h› (см. приложение B).
Упражнение 2.1. Напишите программу, которая будет выдавать диапазоны значений типов char, short, int и long, описанных как signed и как unsigned, с помощью печати соответствующих значений из стандартных заголовочных файлов и путем прямого вычисления. Определите диапазоны чисел с плавающей точкой различных типов. Вычислить эти диапазоны сложнее.
- 2.1 Имена переменных
- 2.2 Типы и размеры данных
- 2.3 Константы
- 2.4 Объявления
- 2.5 Арифметические операторы
- 2.6 Операторы отношения и логические операторы
- 2.7 Преобразования типов
- 2.8 Операторы инкремента и декремента
- 2.9 Побитовые операторы
- 2.10 Операторы и выражения присваивания
- 2.11 Условные выражения
- 2.12 Приоритет и очередность вычислений
- Типы данных float и double
- Изменения, связанные с устранением неявных допущений относительно предполагаемых размеров элементов данных
- Глава 2. Типы, операторы и выражения
- Резервное копирование базы данных InterBase
- Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Владелец базы данных
- ЧАСТЬ IV. База данных и ее объекты.
- Перевод базы данных InterBase 6.x на 3-й диалект
- Типы данных для работы с датой и временем
- Большие целые типы