Поддержка типов
Материал из cppreference.com
< c
См. также обзор системы типов и арифметические типы, определённые языком.
Базовые типы
Дополнительные базовые типы и удобные макросы
Определены в заголовочном файле
<stddef.h> | |
| беззнаковый целый тип, значение которого возвращает оператор sizeof (определение типа) | |
| целый тип со знаком, значение которого возвращается при вычитании двух указателей (определение типа) | |
(C23) |
тип предопределённой константы — нулевого указателя nullptr (определение типа) |
| константа нулевого указателя, определяемая реализацией (макроконстанта) | |
(C11) |
тип с требованием выравнивания по максимальному скалярному типу (определение типа) |
| смещение в байтах от начала структуры до указанного элемента (функция-макрос) | |
Определены в заголовочном файле
<stdbool.h> | |
bool (C99)(удалено в C23) |
удобный макрос, расширяется в _Bool (ключевое слово-макрос) |
true (C99)(удалено в C23) |
расширяется в целую константу 1 (макроконстанта) |
false (C99)(удалено в C23) |
расширяется в целую константу 0 (макроконстанта) |
__bool_true_false_are_defined (C99)(устарело в C23) |
расширяется в целую константу 1 (макроконстанта) |
Определены в заголовочном файле
<stdalign.h> | |
alignas (C11)(удалено в C23) |
удобный макрос, расширяется в ключевое слово _Alignas (ключевое слово-макрос) |
alignof (C11)(удалено в C23) |
удобный макрос, расширяется в ключевое слово _Alignof (ключевое слово-макрос) |
__alignas_is_defined (C11)(удалено в C23) |
расширяется в целую константу 1 (макроконстанта) |
__alignof_is_defined (C11)(удалено в C23) |
расширяется в целую константу 1 (макроконстанта) |
Определены в заголовочном файле
<stdnoreturn.h> | |
noreturn (C11)(устарело в C23) |
удобный макрос, расширяется в _Noreturn (ключевое слово-макрос) |
Целые типы фиксированного размера (начиная с C99)
Числовые границы
Замечания
|
Типом Программа может не определять и, возможно, затем переопределять макросы |
(начиная с C99) (до C23) |
|
Типом Если |
(начиная с C23) |
Пример
Запустить этот код
#include <stdio.h>
#include <stdbool.h>
#include <stdalign.h>
int main(void)
{
printf("%d %d %d\n", true && false, true || false, !false);
printf("%d %d\n", true ^ true, true + true);
printf("%zu\n", alignof(short));
}
Возможный вывод:
0 1 1
0 2
2
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.15 Выравнивание <stdalign.h> (стр. 196)
- 7.18 Логический тип и значения <stdbool.h> (стр. 210)
- 7.19 Общие определения <stddef.h> (стр. 211)
- 7.23 _Noreturn <stdnoreturn.h> (стр. 263)
- 7.31.9 Логический тип и значения <stdbool.h> (стр. 332)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.15 Выравнивание <stdalign.h> (стр. 268)
- 7.18 Логический тип и значения <stdbool.h> (стр. 287)
- 7.19 Общие определения <stddef.h> (стр. 288)
- 7.23 _Noreturn <stdnoreturn.h> (стр. 361)
- 7.31.9 Логический тип и значения <stdbool.h> (стр. 456)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.18 Логический тип и значения <stdbool.h> (стр. 253)
- 7.19 Общие определения <stddef.h> (стр. 254)
- 7.26.7 Логический тип и значения <stdbool.h> (стр. 401)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.1.5 Общие определения <stddef.h>
См. также
Документация C++ по библиотеке поддержки типов
|