Тип задаётся набором допустимых значений и действий, которые можно производить над данными этого типа. Типы данных языка C схематически представлены на рисунке 1.

Рис. 1
Базовые типы данных языка C.
Тип char – символьный тип, хранит код символа. Любой символ в компьютере, который можно ввести с клавиатуры, вывести на монитор, имеет соответствующий ему код. Эти коды представлены в таблицах кодировок ASCII, ГОСТ и других, в зависимости от используемой компьютером кодировки. Преобразование символа в код и наоборот производится компьютером автоматически.
Тип int – целочисленный тип, хранит значение целого числа.
Тип float – вещественный тип, хранит значение числа с плавающей точкой.
Тип double – вещественный тип двойной длины, хранит значение числа с плавающей точкой.
Типы char, int, float, double является знаковыми, то есть переменная данного типа может принимать положительные и отрицательные значения.
Тип void – пустой тип, не имеющий значения.
Для модификации диапазонов принимаемых данными типами значений возможно использование модификаторов типа, которые ставятся перед соответствующим типом.
Модификатор signed – знаковый тип, хранит значения как положительные, так и отрицательные.
Модификатор unsigned – беззнаковый тип, хранит только неотрицательные значения.
Модификатор short – короткий тип, хранит укороченные значения.
Модификатор long – длинный тип, хранит удлинённые значения.
Модификаторы signed и unsigned могут применяться к типам char и int. Модификаторы short и long могут применяться к типу int. Модификатор long может также применяться к типу double. Модификаторы signed и unsigned могут комбинироваться с модификаторами short и long в применении к типу int.
В следующей таблице приведены все возможные типы с различными комбинациями модификаторов для стандарта ANSI языка C, их размеры в байтах и интервалы изменения.
| Тип
| Размер в байтах (битах)
| Интервал изменения
|
| char
| 1(8)
| от -128
| до 127
|
| unsigned char
| 1(8)
| от 0
| до 255
|
| signed char
| 1(8)
| от -128
| до 127
|
| int
| 2(16)
| от -32768
| до 32767
|
| unsigned int
| 2(16)
| от 0
| до 65535
|
| signed int
| 2(16)
| от -32768
| до 32767
|
| short int
| 2(16)
| от -32768
| до 32767
|
| unsigned short int
| 2(16)
| от 0
| до 65535
|
| signed short int
| 2(16)
| от -32768
| до 32767
|
| long int
| 4(32)
| от -2147483648
| до 2147483647
|
| signed long int
| 4(32)
| от -2147483648
| до 2147483647
|
| unsigned long int
| 4(32)
| от 0
| до 4294967295
|
| float
| 4(32)
| от -3.4E+38
| до -3.4E-38
|
|
|
| от 3.4E-38
| до 3.4E+38
|
| double
| 8(64)
| от -1.7E+308
| до -1.7E-308
|
|
|
| от 1.7E-308
| до 1.7E+308
|
| long double
| 10(80)
| от -3.4E+4932
| до -3.4E-4932
|
|
|
| от 3.4E-4932
| до 3.4E+4932
|
В среде Borland C++ 3.1 можно в объявлениях переменных опускать слово int (например, short вместо short int, unsigned short вместо unsigned short int).
Все числа в памяти ЭВМ хранятся в двоичной системе счисления, но для программиста они доступны в десятичной системе счисления.
Различие между целыми числами со знаком и целыми числами без знака состоит в том, как интерпретируется старший бит целого числа в машинном представлении. Старший бит для целого знакового числа определяет знак числа. Если старший бит равен нулю, то число положительное, если единице, то число отрицательное. Отрицательные числа хранятся в обратном коде. Старший бит для целого беззнакового числа является обычным численным разрядом.