Стандарт С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 служит для объявления функции, не возвращающей значения, или для создания универсального указателя. Оба эти применения будут рассмотрены в последующих главах.