Type support - cppreference.com (original) (raw)
See also type system overview and arithmetic types defined by the language.
Contents
[edit] Basic types
[edit] Additional basic types and convenience macros
| Defined in header <stddef.h> | |
|---|---|
| size_t | unsigned integer type returned by the sizeof operator (typedef) [edit] |
| ptrdiff_t | signed integer type returned when subtracting two pointers (typedef) [edit] |
| nullptr_t(C23) | the type of the predefined null pointer constant nullptr (typedef) [edit] |
| NULL | implementation-defined null pointer constant (macro constant) [edit] |
| max_align_t(C11) | a type with alignment requirement as great as any other scalar type (typedef) [edit] |
| offsetof | byte offset from the beginning of a struct type to specified member (function macro) [edit] |
| Defined in header <stdbool.h> | |
| bool(C99)(removed in C23) | convenience macro, expands to _Bool (keyword macro) |
| true(C99)(removed in C23) | expands to integer constant 1 (macro constant) |
| false(C99)(removed in C23) | expands to integer constant 0 (macro constant) |
| __bool_true_false_are_defined(C99)(deprecated in C23) | expands to integer constant 1 (macro constant) |
| Defined in header <stdalign.h> | |
| alignas(C11)(removed in C23) | convenience macro, expands to keyword _Alignas (keyword macro) |
| alignof(C11)(removed in C23) | convenience macro, expands to keyword _Alignof (keyword macro) |
| __alignas_is_defined(C11)(removed in C23) | expands to integer constant 1 (macro constant) |
| __alignof_is_defined(C11)(removed in C23) | expands to integer constant 1 (macro constant) |
| Defined in header <stdnoreturn.h> | |
| noreturn(C11)(deprecated in C23) | convenience macro, expands to _Noreturn (keyword macro) |
[edit] Fixed width integer types (since C99)
[edit] Numeric limits
[edit] Notes
| The type of true and false is int rather than _Bool.A program may undefine and perhaps then redefine the macros bool, true and false. However, such ability is a deprecated feature. | (since C99)(until C23) |
|---|---|
| The type of true and false is bool. It is unspecified whether any of bool, _Bool, true, or false is implemented as a predefined macro.If bool, true, or false (but not _Bool) is defined as a predefined macro, a program may undefine and perhaps redefine it. | (since C23) |
[edit] Example
#include <stdalign.h> #include <stdbool.h> #include <stdio.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)); }
Possible output:
[edit] References
C23 standard (ISO/IEC 9899:2024):
7.15 Alignment <stdalign.h> (p: TBD)
7.18 Boolean type and values <stdbool.h> (p: TBD)
7.19 Common definitions <stddef.h> (p: TBD)
7.23 _Noreturn <stdnoreturn.h> (p: TBD)
7.31.9 Boolean type and values <stdbool.h> (p: TBD)
C17 standard (ISO/IEC 9899:2018):
7.15 Alignment <stdalign.h> (p: 196)
7.18 Boolean type and values <stdbool.h> (p: 210)
7.19 Common definitions <stddef.h> (p: 211)
7.23 _Noreturn <stdnoreturn.h> (p: 263)
7.31.9 Boolean type and values <stdbool.h> (p: 332)
C11 standard (ISO/IEC 9899:2011):
7.15 Alignment <stdalign.h> (p: 268)
7.18 Boolean type and values <stdbool.h> (p: 287)
7.19 Common definitions <stddef.h> (p: 288)
7.23 _Noreturn <stdnoreturn.h> (p: 361)
7.31.9 Boolean type and values <stdbool.h> (p: 456)
C99 standard (ISO/IEC 9899:1999):
7.18 Boolean type and values <stdbool.h> (p: 253)
7.19 Common definitions <stddef.h> (p: 254)
7.26.7 Boolean type and values <stdbool.h> (p: 401)
C89/C90 standard (ISO/IEC 9899:1990):
4.1.5 Common definitions <stddef.h>