НазадОглавлениеДалее

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

В языке Си реализован набор типов данных, называемых "базовыми" типами. Спецификации этих типов перечислены в таблице 3.1.
Таблица 3.1.
Базовые типыСпецификация типов
Целыеsigned charзнаковый символьный
signed intзнаковый целый
signed short intзнаковый короткий целый
signed long intзнаковый длинный целый
unsigned charбеззнаковый символьный
unsigned intбеззнаковый целый
unsigned short intбеззнаковый короткий целый
unsigned long intбеззнаковый длинный целый
Плавающиеfloatплавающий одинарной точности
doubleплавающий двойной точности
long floatдлинный плавающий одинарной точности
long doubleдлинный плавающий двойной точности
Прочиеvoidпустой
enumперечислимый

Тип long float реализован только в версии 4.0 СП MSC и эквивалентен типу double. В версии 5.0 СП MSC и в СП ТС реализован тип long double, причем в версии 5.0 СП MSC и версии 1.5 СП ТС он эквивалентен типу double, а в версии 2.0 СП ТС является самостоятельным типом размером 80 битов.

Типы char, int, short и long имеют две формы - знаковую (signed) и беззнаковую (unsigned). В совокупности они образуют целый тип. Перечислимый тип также служит для представления целых значений, однако переменная перечислимого типа может принимать значения только из набора, заданного в ее объявлении. Спецификации типов float и double относятся к плавающему типу.

Целый тип (включая перечислимый тип) и плавающий тип в совокупности образуют арифметический тип.

Тип void (пустой) имеет специальное назначение. Указание спецификации типа void в объявлении функции означает, что функция не возвращает значений. Указание типа void в списке объявлений аргументов в объявлении функции означает, что функция не принимает аргументов. Можно объявить указатель на тип void; он будет указывать на любой, т.е. неспецифицированный тип. Тип void может быть указан в операции приведения типа. Приведение значения выражения к типу void явно указывает на то, что это значение не используется. Нельзя объявить переменную типа void.

При записи спецификаций целого и плавающего типа допустимы сокращения, приведенные в таблице 3.2. Например, в целых типах ключевое слово signed может быть опущено. Если ключевое слово unsigned отсутствует в записи спецификации типа short, int или long, то тип целого будет знаковым, даже если опущено ключевое слово signed.

По умолчанию тип char всегда имеет знак. Однако существует опция компилятора языка Си, позволяющая изменить умолчание для char со знакового типа на беззнаковый. Если эта опция задана, то сокращение char имеет тот же смысл, что и unsigned char, и, следовательно, для объявления символьной переменной со знаком должно быть записано ключевое слово signed.
Таблица 3.2. Спецификации типов и их сокращения
Спецификация типаСокращение
signed charchar
signed intsigned, int
signed short intshort, signed short
signed long intlong, signed long
unsigned char-
unsigned intunsigned
unsigned short intunsigned short
unsigned long intunsigned long
float-
long floatdouble
long doubledouble (СП MSC 5.0, СП ТС 1.5)
long double- (СП ТС 2.0)

Примечание. В данной книге в основном используются сокращенные формы записи спецификаций типов, перечисленные в таблице 3.2; при этом предполагается, что тип char по умолчанию имеет знак.


НазадОглавлениеДалее