Базовые типы данных

Содержание

Стандарт С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.



Таблица 2.1. Все типы данных, определенные Стандартом C
ТипТипичный размер в битахМинимально допустимый диапозон значений
char8от -127 до 127
unsigned char8от 0 до 255
signed char8от -127 до 127
int16 или 32от -32767 до 32767
unsigned int16 или 32от 0 до 65535
signed int16 или 32то же, что int
short int16от -32767 до 32767
unsigned short int16от 0 до 65535
signed short int16то же, что short int
long int32от -2 147 483 647 до 2 147 483 647
long long int64от -(263-1) до (263-1), добавлен стандартом C99
signed long int32то же, что long int
unsigned long int32от 0 до 4 294 967 295
unsigned long long int64от 0 до (264-1), добавлен в C99
float32от 1E-37 до 1E+37, с точностью не менее 6 значащих десятичных цифр
double64от 1E-37 до 1E+37, с точностью не менее 10 значащих десятичных цифр
long double80от 1E-37 до 1E+37, с точностью не менее 10 значащих десятичных цифр

Тип void служит для объявления функции, не возвращающей значения, или для создания универсального указателя. Оба эти применения будут рассмотрены в последующих главах.