В версии C89 определенны следующие основные типы данных.
| Тип данных |
Ключевое слово |
| Символьный |
char |
| Целочисленный |
int |
| С плавающей запятой |
float |
| С плавающей запятой двойной точности |
double |
| Пустой |
void |
К перечисленным выше типам в версии C99 добавлены следующие.
| Тип данных |
Ключевое слово |
| Логический, или булев (истина/ложь) |
_Bool |
| Комплексный |
_Complex |
| Мнимый |
_Imaginary |
В языке C++ к типам, что определенны в версии C89 добавлены следующие.
| Тип данных |
Ключевое слово |
| Логический, или булев (true/false) |
bool |
| Символьный двухбайтовый |
wchar_t |
Ключевое слово wchar_t задаёт тип двухбайтовых символов. Для хранения символов широкого, или двойного, формата отводиться 16 разрядов
Примечание: ключевые слова для обозначения логического типа данных в версии C99 и языке C++, отличаются одно от другого: _Bool (C99) и bool (C++). В версии C89 логический тип данных вообще отсутствует.
Некоторые основные типы могут быть модифицированы с помощью одного или нескольких модификаторов типов:
- signed - знаковый
- unsigned - беззнаковый
- short - короткий
- long - длинный
Если при объявлении переменных используется один модификатор (без наименования типа), то предполагается использование типа int. Например, две следующие записи эквивалентны.
unsigned int i;
unsigned i;
| Тип |
Размер в байтах |
Диапазон |
| char |
1 |
-128 - 127 |
| unsigned char |
1 |
0 - 255 |
| signed char |
1 |
-128 - 127 |
| int |
2 |
-32 768 - 32 767 |
| unsigned int |
2 |
0 - 65 535 |
| signed int |
2 |
Аналогично int |
| short int |
2 |
Аналогично int |
| unsigned short int |
2 |
0 - 65 535 |
| signed short int |
2 |
Аналогично int |
| long int |
4 |
-2 147 483 648 - 2 147 483 647 |
| signed long int |
4 |
Аналогично long int |
| unsigned long int |
4 |
0 - 4 294 967 295 |
| long long int |
8 |
-263 - (263-1) (только в C99) |
| signed long long int |
8 |
Аналогично long long int (только в C99) |
| unsigned long long int |
8 |
0 - 264-1 (только в C99) |
| float |
4 |
3.4E-38 - 3.4E+38 (6 значащих цифр) |
| double |
8 |
1.7E-308 - 1.7E+308 (10 значащих цифр) |
| long double |
10 |
34E-4932 - 3.4E+4932 (10 значащих цифр) |
| wchar_t |
2 |
Аналогично unsigned int |