Язык Си имеет множество встроенных типов данных, доступных для использования без подключения каких-либо заголовочных файлов.
Тип данных | Спецификатор ввода-вывода (для printf и scanf) | Размер байт | Диапазон значений |
---|---|---|---|
_Bool | %i или %d (выводит 0 для false и 1 для true) | 1 | 0 или 1 |
char (unsigned char) | %c (как символ), %d (как число) | 1 | от -128 - 127 (0 - 255) |
short (unsigned short) | %hi (%hu) | 2 | −32768 - 32767 (0 - 65535) |
int (unsigned int) | %d или %i (%u) | 4 | −2 147 483 648 - 2 147 483 647 (0 - 4 294 967 295) |
long (unsigned long) | %ld или %li (%lu) | 4 | −2 147 483 648 - 2 147 483 647 (0 - 4 294 967 295) |
long long (unsigned long long) | %I64d или %I64i (%I64u) | 8 | −9 223 372 036 854 775 808 - 9 223 372 036 854 775 807 (0 - 18 446 744 073 709 551 615) |
float | %f | 4 | -3,4E–38 - 3,4E+38 (Верных значимых цифр 6-9) |
double | %f | 8 | -1.7E-308 - 1.7E+308 (Верных значимых цифр 15-18) |
Строки | %s | Кол-во символов + 1 | |
Указатели | %p | для х86 - 4 для х64 - 8 |
Для целочисленных значений спецификатор формата может быть:
%x (%X большие буквы A-F) - шестнадцатеричное представление
%o - восьмеричное представление
Также в языке Си используются следующие составные типы данных:
Макросы - макроподстановки и директивы препроцессору
Массивы - статические и динамические, одномерные и многомерные
enum - перечисление (именованные константы)
struct - структура (объединение нескольких типов данных)
union - объединение (один нескольких типов данных в одной области памяти)