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

[edit] See also