Введение |
Массивы, строки и структуры |
Операторы |
Операции |
Пояснения к курсовой работе |
Препроцессор |
Работа с файлами |
Стандарты безопасного кодирования |
Указатели и динамическая память |
Функции и модули |
Ввод-вывод |
Символьные типы
Название типа | Размер | Диапазон значений | Примеры констант |
---|---|---|---|
char |
1 байт/8 бит | -128..127 или 0..255 | 'a' |
signed char |
1 байт/8 бит | -128..127 | - |
unsigned char (char8_t ) |
1 байт/8 бит | 0..255 | - |
wchar_t |
2 или 4 байта | UCS-2 (без символов с кодом > 65535) в Windows или Unicode в Linux | L'a' |
Тип char
используется в Си для представления целых чисел размером 1 байт. Тип wchar_t
определяется в <wchar.h>
, char8_t
– в <uchar.h>
.
Целые типы
Название типа | Размер | Диапазон значений | Примеры констант |
---|---|---|---|
short или short int или signed short |
2 байта/16 бит | -32768..32767 | - |
unsigned short или unsigned short int |
2 байта/16 бит | 0..65535 | - |
int или signed int |
4 байта/32 бита * | -2⋅109..2⋅109 | 42 |
unsigned или unsigned int |
4 байта/32 бита * | 0..4⋅109 | 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⋅1018..9⋅1018 | 42ll 42LL |
unsigned long long или unsigned long long int |
8 байт/64 бита | 0..1019 | 42ull 42ULL |
*
по стандарту int
может быть 2 байта/16 бит в 16-битных компиляторах для DOS и микроконтроллеров.
В <stdint.h>
определяются целые типы, имеющие фиксированное количество бит: int8_t
, int16_t
, int32_t
, int64_t
, uint8_t
, uint16_t
, uint32_t
, uint64_t
.
Константы для short
нужно получать из констант для int
с помощью преобразования типа: (short)42
Вещественные типы
Название типа | Размер | Диапазон значений | Точность, десятичных знаков | Примеры констант |
---|---|---|---|---|
float |
4 байта | ±1038 | 7 | 12.5f 12.5F 1.5e8f |
double |
8 байт | ±10308 | 15 | 12.5 12.5 1.5e8 |
long double |
10 байт | ±103000 | 19 | 12.5l 12.5L 1.5e8L |
float _Complex |
8 байт | ±1038 | 7 | 12.5f+1.5e8f*I |
double _Complex |
16 байт | ±10308 | 15 | 12.5+1.5e8*I |
long double _Complex |
20 байт | ±103000 | 19 | 12.5L+1.5e8L*I |
Запись 1.5e8
интерпретируется как 1.5⋅108. Тип 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. Можно указать значение для имени явно, тогда следующим в списке именам без явного указания значения будут присвоены следующие по порядку целые числа.
enum color { Red, Green, Blue }; // Red=0, Green=1, Blue=2
enum base { Decimal=10, Octal=8, Hex=16, Undefined }; // Undefined=17
С переменными типа _Bool
и перечисляемых типов можно выполнять арифметические действия.