Стандарт С89 определяет пять фундаментальных типов данных: char — символьные данные, int — целые, float — с плавающей точкой, double — двойной точности, void — без значения. На основе этих типов формируются другие типы данных. Размер (объем занимаемой памяти) и диапазон значений этих типов данных для разных процессоров и компиляторов могут быть разными. Однако объект типа char всегда занимает 1 байт. Размер объекта int обычно совпадает с размером слова в конкретной среде программирования. В большинстве случаев в 16-разрядной среде (DOS или Windows 4.1) int занимает 16 битов, а в 32-разрядной (Windows 95/98/NT/2000) — 32 бита. Однако полностью полагаться на это нельзя, особенно при переносе программы в другую среду. Необходимо помнить, что стандарт С обусловливает только минимальный диапазон значений каждого типа данных, но не размер в байтах.
| На заметку | Кроме перечисленных пяти типов, стандарт С99 определяет еще три: _Вооl, _Соmplex и _Imaginary. Они описаны в части II. |
Конкретный формат числа с плавающей точкой зависит от его реализации в трансляторе. Переменные типа char обычно используются для обозначения набора символов стандарта ASCII, символы, не входящие в этот набор, разными компиляторами обрабатываются по-разному.
Диапазон значений типов float и double зависит от формата представления чисел с плавающей точкой. Стандарт С определяет для чисел с плавающей точкой минимальный диапазон значений от 1Е-37 до 1Е+37. Минимальное количество цифр мантиссы для типов с плавающей точкой приведено в табл. 2.1.
| Тип | Типичный размер в битах | Минимально допустимый диапозон значений |
|---|---|---|
| char | 8 | от -127 до 127 |
| unsigned char | 8 | от 0 до 255 |
| signed char | 8 | от -127 до 127 |
| int | 16 или 32 | от -32767 до 32767 |
| unsigned int | 16 или 32 | от 0 до 65535 |
| signed int | 16 или 32 | то же, что int |
| short int | 16 | от -32767 до 32767 |
| unsigned short int | 16 | от 0 до 65535 |
| signed short int | 16 | то же, что short int |
| long int | 32 | от -2 147 483 647 до 2 147 483 647 |
| long long int | 64 | от -(263-1) до (263-1), добавлен стандартом C99 |
| signed long int | 32 | то же, что long int |
| unsigned long int | 32 | от 0 до 4 294 967 295 |
| unsigned long long int | 64 | от 0 до (264-1), добавлен в C99 |
| float | 32 | от 1E-37 до 1E+37, с точностью не менее 6 значащих десятичных цифр |
| double | 64 | от 1E-37 до 1E+37, с точностью не менее 10 значащих десятичных цифр |
| long double | 80 | от 1E-37 до 1E+37, с точностью не менее 10 значащих десятичных цифр |
Тип void служит для объявления функции, не возвращающей значения, или для создания универсального указателя. Оба эти применения будут рассмотрены в последующих главах.










