Базовые типы данных
В языке Си реализован набор типов данных, называемых "базовыми" типами. Спецификации этих типов перечислены в таблице 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 char |
char |
signed int |
signed, int |
signed short int |
short, signed short |
signed long int |
long, signed long |
unsigned char |
- |
unsigned int |
unsigned |
unsigned short int |
unsigned short |
unsigned long int |
unsigned long |
float |
- |
long float |
double |
long double |
double (СП MSC 5.0, СП TC 1.5) |
long double |
—(СП TC 2.0) |
по умолчанию имеет знак.