||.draw|| Название типа|Размер|Диапазон значений|Примеры констант
-------------|:------:|:-----------------:|:---------------:
``char``| 1 байт/8 бит| `-128..127` или `0..255` | ``'a'``
``signed char``| 1 байт/8 бит| `-128..127` | -
``unsigned char``| 1 байт/8 бит|`0..255`| -
``wchar_t`` | 2 или 4 байта | UCS-2 (без символов с кодом > 65535) в Windows или Unicode в Linux | ``L'a'``
Тип ``char`` используется в Си для хранения целых чисел размером 1 байт. Тип ``wchar_t`` определяется в stddef.h
*Целые типы*
||.draw|| Название типа|Размер|Диапазон значений|Примеры констант
-------------|:------:|:-----------------:|:---------------:
``short`` или ``short int`` или ``signed short``|2 байта/16 бит| `-32768..32767`| -
``unsigned short`` или ``unsigned short int``|2 байта/16 бит| `0..65535` | -
``int`` или ``signed int``|4 байта/32 бита| `-2*10^9..2*10^9`| ``42``
``unsigned`` или ``unsigned int``|4 байта/32 бита| `0..4*10^9` | ``42u``
``long`` или ``long int`` или ``signed long``|4 или 8 байт| в зависимости от реализации | ``42l 42L``
``unsigned long`` или ``unsigned long int``|4 или 8 байт| в зависимости от реализации | ``42ul 42UL``
``long long`` или ``long long int`` или ``signed long long``|8 байт/64 бита| `-9*10^18..9*10^18` | ``42ll 42LL``
``unsigned long long`` или ``unsigned long long int``|8 байт/64 бита| `0..10^19` | ``42ull 42ULL``
Константы для ``short`` нужно получать из констант для ``int`` с помощью преобразования типа: ``(short)42``
Запись ``1.5e8`` интерпретируется как `1.5*10^8`. Тип ``float`` не рекомендуется использовать из-за низкой точности. Константа ``I`` определяется в complex.h, там же определяется синоним ``complex`` для ``_Complex``. Для представления вещественных чисел используется двоичная система счисления, поэтому числу 1.11 в компьютере соответствует 1.1100000000000001, а 1.11F - 1.1100000143.
##### Прочие типы
Тип ``void`` означает тип, у которого нет значений. Нельзя определять переменные такого типа. Используется чаще всего для указания, что функция не имеет параметров или не возвращает результатов.
Тип ``_Bool`` имеет два значения 0 (ложь) и 1 (истина). При преобразовании в ``_Bool`` ненулевое значение превращается в 1, нулевое - в 0. В stdbool.h определяются синоним ``bool`` и константы ``true`` и ``false``.
Перечисляемый тип задается перечислением имён для возможных значений. Указанные в списке имена
становятся целыми константами, имеющими по умолчанию значения, начиная с 0. Можно указать значение для имени явно, тогда следующим в списке именам без явного указания значения будут присвоены следующие по порядку целые числа.
```c
enum color { RED, GREEN, BLUE }; // RED=0, GREEN=1, BLUE=2
enum base { DECIMAL=10, OCTAL=8, HEX=16, UNDEFINED }; // UNDEFINED=17
```
С переменными типа ``_Bool`` и перечисляемых типов можно выполнять арифметические действия.