[INTRODUCTION. Introduction] This lists documents that were referred to during the preparation of the standard.|bibliography
[3.4.1 Terms, definitions, and symbols] An example of this behavior is the propagation of the high-order bit when a signed integer is shifted right.|implementation-defined
[3.4.2 Terms, definitions, and symbols] An example of this behavior is whether the islower function returns true for characters other than the 26 lowercase Latin letters.|locale-specific
[3.4.3 Terms, definitions, and symbols] An example of this behavior is the behavior on integer overflow.|undefined
[3.4.4 Terms, definitions, and symbols] This behavior is the behavior where the standard provides two or more possibilities and imposes no further requirements on which is chosen in any instance.|unspecified
[3.4.4 Terms, definitions, and symbols] An example of this behavior is the order in which the arguments to a function are evaluated.|unspecified
[3.6 Terms, definitions, and symbols] A byte is composed of a contiguous sequence of these.|bits{The number of bits is implementation-defined.}
[3.6 Terms, definitions, and symbols] A byte is composed of a contiguous sequence of bits, the number of which is this.|implementation-defined{Bet you thought it was 8!}
[3.6 Terms, definitions, and symbols] The least significant bit is called this.|low-order bit|low-order
[3.6 Terms, definitions, and symbols] The most significant bit is called this.|high-order bit|high-order
[3.6 Terms, definitions, and symbols] The low-order bit is also known as this.|least significant bit|least significant|lsb{It stands for least significant bit.}
[3.6 Terms, definitions, and symbols] The high-order bit is also known as this.|most significant bit|most significant|msb{It stands for most significant bit.}
[3.15 Terms, definitions, and symbols] This is a region of data storage in the execution environment, the contents of which can represent values.|object
[3.15 Terms, definitions, and symbols] An object is a region of data storage in the execution environment, the contents of which can represent these.|values
[4. Conformance] In the standard, ``shall'' is to be interpreted as this on an implementation, or on a program.|requirement{If violated, the behavior is undefined.}
[4. Conformance] In the standard, ``shall not'' is to be interpreted as this on an implementation, or on a program.|prohibition{If violated, the behavior is undefined.}
[4. Conformance] In the standard, this phrase is to be interpreted as a requirement on an implementation, or on a program.|shall{If violated, the behavior is undefined.}
[4. Conformance] In the standard, this phrase is to be interpreted as a prohibition on an implementation, or on a program.|shall not{If violated, the behavior is undefined.}
[4. Conformance] If a ``shall'' or ``shall not'' requirement that appears outside of a constraint or runtime-constraint is violated, the behavior is this.|undefined
[4. Conformance] A program that is correct, operates on correct data, and possibly containing unspecified behavior, shall be this kind of program.|correct|conforming|proper{I was really looking for "correct" or "conforming", to be honest.}|portable{I was really looking for "correct" or "conforming", to be honest.}
[4. Conformance] The implementation shall not successfully translate a preprocessing translation unit containing this preprocessing directive unless it is part of a group skipped by conditional inclusion.|#error
[4. Conformance] This kind of program shall use only those features of the language and library specified in this International Standard. It shall not produce output dependent on any unspecified, undefined, or implementation-defined behavior, and shall not exceed any minimum implementation limit.|strictly conforming
[4. Conformance] The two forms of conforming implementation are these (name both, separated with "and").|hosted and freestanding|freestanding and hosted
[4. Conformance] A conforming hosted implementation shall accept any kind of this program.|strictly conforming
[4. Conformance] This kind of conforming implementation shall accept any strictly conforming program in which the use of the library features is confined to the contents of the standard headers <float.h>, <iso646.h>, <limits.h>, <stdalign.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, <stdint.h>, and <stdnoreturn.h>.|freestanding
[4. Conformance] A conforming program is one that is acceptable to a conforming this.|implementation|compiler{I was really looking for "implementation", to be honest.}
[4. Conformance] A conforming implementation may have these (including additional library functions), provided they do not alter the behavior of any strictly conforming program.|extensions
[4. Conformance] An implementation shall be accompanied by this that defines all implementation-defined and locale-specific characteristics and all extensions.|document|documentation
[5. Environment] An implementation translates C source files and executes C programs in two data-processing-system environments, which will be called these environments (name both, separated by "and").|translation and execution|execution and translation
[5.1.1.1 Program structure] A source file together with all the headers and source files included via this preprocessing directive is known as a preprocessing translation unit.|#include
[5.1.1.1 Program structure] A source file together with all the headers and source files included via the preprocessing directive #include is known as this.|preprocessing translation unit
[5.1.1.1 Program structure] After this occurs, a preprocessing translation unit is called a translation unit.|preprocessing
[5.1.1.1 Program structure] After preprocessing, a preprocessing translation unit is called this.|translation unit
[5.1.1.2 Translation phases] A source file that is not empty shall end with this character.|new-line|newline|\n
[5.1.1.2 Translation phases] A source file shall not end in a partial this.|preprocessing token{Nor in a partial comment, either.}|comment{Nor in a partial preprocessing token, either.}
[5.1.1.2 Translation phases] If a character sequence that matches the syntax of a universal character name is produced by token concatenation, the behavior is this.|undefined
[5.1.1.2 Translation phases] Source files, translation units, and translated translation units need not necessarily be stored as this.|files|file
[5.1.1.3 Diagnostics] A conforming implementation shall produce at least one of this (identified in an implementation-defined manner) if a preprocessing translation unit or translation unit contains a violation of any syntax rule or constraint, even if the behavior is also explicitly specified as undefined or implementation-defined.|diagnostic message|diagnostic
[5.1.1.3 Diagnostics] An implementation shall issue this for the translation unit: char i; int i; because in those cases where wording in this International Standard describes the behavior for a construct as being both a constraint error and resulting in undefined behavior, the constraint error shall be diagnosed.|diagnostic|diagnostic message
[5.1.2 Execution environments] Two execution environments are defined: freestanding and hosted. In both cases, program startup occurs when this is called by the execution environment.|designated C function|designated function
[5.1.2 Execution environments] All objects with static storage duration shall be this before program startup.|initialized
[5.1.2 Execution environments] All objects with this storage duration shall be initialized (set to their initial values) before program startup.|static
[5.1.2.2.1 Program startup] In this execution environment, the function called at program startup is named main.|hosted
[5.1.2.2.1 Program startup] In a hosted execution environment, the function called at program startup is named this.|main
[5.1.2.2.1 Program startup] The main function shall be defined with a return type of this.|int{It can also be defined in some other implementation-defined manner!}
[5.1.2.2.1 Program startup] If they are declared, the parameters to the main function shall obey the following constraints: The value of argc shall be this; argv[argc] shall be a null pointer.|nonnegative|>=0
[5.1.2.2.1 Program startup] If they are declared, the parameters to the main function shall obey the following constraints: The value of argc shall be nonnegative; argv[argc] shall be this.|null pointer
[5.1.2.2.1 Program startup] If the value of argc is this, the array members argv[0] through argv[argc-1] inclusive shall contain pointers to strings, which are given implementation-defined values by the host environment prior to program startup.|greater than zero|greater than 0|>0
[5.1.2.2.1 Program startup] If the host environment is not capable of supplying strings with letters in both uppercase and lowercase, the implementation shall ensure that the strings are received in this case.|lowercase|lower
[5.1.2.2.1 Program startup] If the value of argc is this, the string pointed to by argv[0] represents the program name.|greater than zero{argv[0][0] shall be the null character if the program name is not available from the host environment.}|>0{argv[0][0] shall be the null character if the program name is not available from the host environment.}|greater than 0{argv[0][0] shall be the null character if the program name is not available from the host environment.}
[5.1.2.2.1 Program startup] If the value of argc is greater than zero, the string pointed to by argv[0] represents this.|program name{argv[0][0] shall be the null character if the program name is not available from the host environment.}
[5.1.2.2.1 Program startup] If the value of argc is greater than zero, the string pointed to by argv[0] represents the program name; argv[0][0] shall be this if the program name is not available from the host environment.|null character|0|'\0'|null
[5.1.2.2.1 Program startup] If the value of argc is this, the strings pointed to by argv[1] through argv[argc-1] represent the program parameters.|greater than one|greater than 1|>1
[5.1.2.2.1 Program startup] If the value of argc is greater than one, the strings pointed to by argv[1] through argv[argc-1] represent this.|program parameters|parameters
[5.1.2.2.3 Program termination] If the return type of the main function is a type compatible with this, a return from the initial call to the main function is equivalent to calling the exit function with the value returned by the main function as its argument.|int
[5.1.2.2.3 Program termination] If the return type of the main function is a type compatible with int, a return from the initial call to the main function is equivalent to calling this function with the value returned by the main function as its argument.|exit
[5.1.2.2.3 Program termination] Reaching the } that terminates the main function returns this value.|0|zero
[5.1.2.2.3 Program termination] If the return type is not compatible with int, the termination status returned to the host environment is this.|unspecified
[5.1.2.3 Program execution] The semantic descriptions in the standard describe the behavior of this in which issues of optimization are irrelevant.|abstract machine
[5.1.2.3 Program execution] The semantic descriptions in the standard describe the behavior of an abstract machine in which issues of this are irrelevant.|optimization
[5.1.2.3 Program execution] The semantic descriptions in the standard describe the behavior of an abstract machine in which issues of optimization are this.|irrelevant
[5.1.2.3 Program execution] Given any two evaluations A and B, if A is this before B, then the execution of A shall precede the execution of B.|sequenced
[5.1.2.3 Program execution] Given any two evaluations A and B, if A is not sequenced before or after B, then A and B are this.|unsequenced
[5.1.2.3 Program execution] Given any two evaluations A and B, A and B are this when A is sequenced either before or after B, but it is unspecified which.|indeterminately sequenced
[5.1.2.3 Program execution] The presence of this between the evaluation of expressions A and B implies that every value computation and side effect associated with A is sequenced before every value computation and side effect associated with B.|sequence point
[5.1.2.3 Program execution] An actual implementation need not evaluate part of an expression if it can deduce that its value is not used and that no needed these are produced.|side effects
[5.1.2.3 Program execution] When the processing of the abstract machine is interrupted by receipt of this, the values of objects that are neither lock-free atomic objects nor of type volatile sig_atomic_t are unspecified, as is the state of the floating-point environment.|signal
[5.1.2.3 Program execution] When the processing of the abstract machine is interrupted by receipt of a signal, the values of objects that are neither lock-free atomic objects nor of type volatile sig_atomic_t are this, as is the state of the floating-point environment.|unspecified
[5.1.2.3 Program execution] At program termination, all data written into files shall be this to the result that execution of the program according to the abstract semantics would have produced.|identical|equal
[5.1.2.4 Multi-threaded executions and data races] A synchronization operation on one or more memory locations is either an acquire operation, a release operation, both an acquire and release operation, or this operation.|consume
[5.1.2.4 Multi-threaded executions and data races] This kind of operation on one or more memory locations is either an acquire operation, a release operation, both an acquire and release operation, or a consume operation.|synchronization
[5.1.2.4 Multi-threaded executions and data races] A synchronization operation without this is a fence and can be either an acquire fence, a release fence, or both an acquire and release fence.|associated memory location
[5.1.2.4 Multi-threaded executions and data races] A synchronization operation without an associated memory location is this and can be either an acquire this, a release this, or both an acquire and release this.|fence
[5.1.2.4 Multi-threaded executions and data races] Performing this operation on a mutex forces prior side effects on other memory locations to become visible to other threads that later perform an acquire or consume operation on the mutex.|release
[5.1.2.4 Multi-threaded executions and data races] Performing a release operation on this forces prior side effects on other memory locations to become visible to other threads that later perform an acquire or consume operation on it.|mutex
[5.1.2.4 Multi-threaded executions and data races] A release sequence headed by a release operation A on an atomic object M is a maximal contiguous sub-sequence of side effects in the modification order of M, where the first operation is A and every subsequent operation either is performed by the same thread that performed the release or is this kind of atomic operation.|read-modify-write|RMW{RMW stands for read-modify-write.}
[5.1.2.4 Multi-threaded executions and data races] If there is ambiguity about which side effect to a non-atomic object is visible, then this occurs and the behavior is undefined.|data race|race condition|race hazard
[5.1.2.4 Multi-threaded executions and data races] The execution of a program contains this if it contains two conflicting actions in different threads, at least one of which is not atomic, and neither happens before the other.|data race{Undefined behavior occurs when this happens.}|race condition{Undefined behavior occurs when this happens.}|race hazard{Undefined behavior occurs when this happens.}
[5.2.1 Character sets] Two sets of characters and their associated collating sequences shall be defined: the set in which these are written, and the set interpreted in the execution environment.|source files{It is called the source character set.}
[5.2.1 Character sets] Two sets of characters and their associated collating sequences shall be defined: the set in which source files are written, and the set interpreted in this environment.|execution{It is called the execution character set.}
[5.2.1 Character sets] In a character constant or string literal, members of the execution character set shall be represented by corresponding members of the source character set or by escape sequences consisting of this character followed by one or more characters.|backslash|\
[5.2.1 Character sets] A byte with all bits set to this is called the null character; it shall exist in the basic execution character set.|zero{It is used to terminate a string, for instance.}|0{It is used to terminate a string, for instance.}
[5.2.1 Character sets] A byte with all bits set to 0 is called this.|null character{It is used to terminate a string, for instance.}
[5.2.1 Character sets] A byte with all bits set to 0, called the null character, is used to terminate this.|string
[5.2.1 Character sets] The representation of each member of the source and execution basic character sets shall fit in this.|char|byte
[5.2.1 Character sets] In both the source and execution basic character sets, the value of each character after this in the list of decimal digits shall be exactly one greater than the value of the previous.|0|zero
[5.2.1 Character sets] In both the source and execution basic character sets, the value of each character after 0 in the list of decimal digits shall be exactly this than the value of the previous.|one greater
[5.2.1 Character sets] In source files, there shall be some way of indicating the end of each line of text; the standard treats such an end-of-line indicator as if it were a single one of this character.|new-line|newline|\n
[5.2.1 Character sets] In the basic execution character set, there shall be characters representing alert, backspace, carriage return, and new line. These are called this kind of character.|control|control character
[5.2.1 Character sets] A letter is an uppercase letter or a lowercase letter as defined in this alphabet; in the standard, the term does not include other characters that are letters in other alphabets.|Latin|Latin alphabet
[5.2.1.1 Trigraph sequences] These sequences enable the input of characters that are not defined in the Invariant Code Set as described in ISO/IEC 646, which is a subset of the seven-bit US ASCII code set.|trigraph sequences{Their use is discouraged in modern C.}|trigraphs{Their use is discouraged in modern C.}
[5.2.1.1 Trigraph sequences] The following tokens, ??= ??) ??! ??( ??' ??> ??/ ??< and ??-, are known as these.|trigraph sequences{Their use is discouraged in modern C.}|trigraphs{Their use is discouraged in modern C.}
[5.2.1.2 Multibyte characters] The source character set and the execution character set may both contain multibyte characters. If so, this character set shall be present and each character shall be encoded as a single byte.|basic character set|basic
[5.2.1.2 Multibyte characters] This character shall not occur as part of any other multibyte character.|null character|null|'\0'|0
[5.2.1.2 Multibyte characters] An identifier, comment, string literal, character constant, or header name shall consist of a sequence of this kind of valid character.|multibyte
[5.2.2 Character display semantics] This position is the location on a display device where the next character output by the fputc function would appear.|active|active position
[5.2.2 Character display semantics] The active position is that location on a display device where the next character output by this function would appear.|fputc
[5.2.2 Character display semantics] An example of this behavior is the direction of writing characters to the display.|locale-specific
[5.2.2 Character display semantics] If the active position is at the final position of a line (if there is one), the behavior of the display device is this.|unspecified
[5.2.2 Character display semantics] Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices. This escape sequence produces an audible or visible alert without changing the active position.|\a{It stands for "alert"!}|alert{It is represented as \a.}
[5.2.2 Character display semantics] Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices. This escape sequence moves the active position to the previous position on the current line.|\b{It stands for "backspace"!}|backspace{It is represented as \b.}
[5.2.2 Character display semantics] Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices. This escape sequence moves the active position to the initial position at the start of the next logical page.|\f{It stands for "form-feed"!}|form-feed{It is represented as \f.}
[5.2.2 Character display semantics] Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices. This escape sequence moves the active position to the initial position of the next line.|\n{It stands for "new-line"!}|new-line{It is represented as \n.}
[5.2.2 Character display semantics] Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices. This escape sequence moves the active position to the initial position of the current line.|\r{It stands for "carriage-return"!}|carriage-return{It is represented as \r.}
[5.2.2 Character display semantics] Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices. This escape sequence moves the active position to the next horizontal tabulation position on the current line.|\t{It stands for "horizontal tab"!}|horizontal tab{It is represented as \t.}
[5.2.2 Character display semantics] Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices. This escape sequence moves the active position to the initial position of the next vertical tabulation position.|\v{It stands for "vertical tab"!}|vertical tab{It is represented as \v.}
[5.2.2 Character display semantics] Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices. Each of these escape sequences shall produce a unique implementation-defined value which can be stored in a single this.|char|byte
[5.2.3 Signals and interrupts] The instructions that compose the executable representation of a function is called this.|function image
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many nesting levels of blocks.|127{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many nesting levels of conditional inclusion.|63{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many pointer, array, and function declarators (in any combinations) modifying an arithmetic, structure, union, or void type in a declaration.|12{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many nesting levels of parenthesized declarators within a full declaration.|63{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many nesting levels of parenthesized expressions within a full expression.|63{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many significant initial characters in an internal identifier or a macro name (each universal character name or extended source character is considered a single character).|63{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many external identifiers in one translation unit.|4095{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many identifiers with block scope declared in one block.|511{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many macro identifiers simultaneously defined in one preprocessing translation unit.|4095{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many parameters in one function definition.|127{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many arguments in one function call.|127{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many parameters in one macro definition.|127{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many arguments in one macro invocation.|127{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many characters in a logical source line.|4095{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many characters in a string literal (after concatenation).|4095{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many bytes in an object (in a hosted environment only).|65535{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many nesting levels for #included files.|15{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many case labels for a switch statement (excluding those for any nested switch statements).|1023{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many members in a single structure or union.|1023{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many enumeration constants in a single enumeration.|1023{That ought to be enough for anybody, right?}
[5.2.4.1 Translation limits] The implementation shall be able to translate and execute at least one program that contains at least this many levels of nested structure or union definitions in a single struct-declaration-list.|63{That ought to be enough for anybody, right?}
[5.2.4.2 Numerical limits] An implementation is required to document all its numerical limits in these headers (name both, separated by "and").|limits.h and float.h|float.h and limits.h
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the number of bits for smallest object that is not a bit-field (byte).|CHAR_BIT
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the minimum value for an object of type signed char.|SCHAR_MIN
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type signed char.|SCHAR_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type unsigned char.|UCHAR_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the minimum value for an object of type char.|CHAR_MIN
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type char.|CHAR_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum number of bytes in a multibyte character, for any supported locale.|MB_LEN_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the minimum value for an object of type short int.|SHRT_MIN
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type short int.|SHRT_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type unsigned short int.|USHRT_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the minimum value for an object of type int.|INT_MIN
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type int.|INT_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type unsigned int.|UINT_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the minimum value for an object of type long int.|LONG_MIN
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type long int.|LONG_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type unsigned long int.|ULONG_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the minimum value for an object of type long long int.|LLONG_MIN
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type long long int.|LLONG_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] This macro defines the maximum value for an object of type unsigned long long int.|ULLONG_MAX
[5.2.4.2.1 Sizes of integer types <limits.h>] If the value of an object of type char is treated as this when used in an expression, the value of CHAR_MIN shall be the same as that of SCHAR_MIN, and CHAR_MAX shall be the same as that of SCHAR_MAX.|signed|signed integer
[5.2.4.2.1 Sizes of integer types <limits.h>] If the value of an object of type char is treated as this when used in an expression, the value of CHAR_MIN shall be 0, and CHAR_MAX shall be the same as that of UCHAR_MAX.|unsigned|unsigned integer
[5.2.4.2.1 Sizes of integer types <limits.h>] If the value of an object of type char is treated as an unsigned integer when used in an expression, the value of CHAR_MIN shall be this.|0|zero
[5.2.4.2.1 Sizes of integer types <limits.h>] If the value of an object of type char is treated as an unsigned integer when used in an expression, the value of CHAR_MAX shall be the same as that of this macro.|UCHAR_MAX
[5.2.4.2.2 Characteristics of floating types <float.h>] This is an encoding signifying Not-a-Number.|NaN
[5.2.4.2.2 Characteristics of floating types <float.h>] A NaN is an encoding signifying this.|Not-a-Number|Not a Number
[5.2.4.2.2 Characteristics of floating types <float.h>] A quiet NaN propagates through almost every arithmetic operation without raising this kind of exception.|floating-point|floating-point exception
[5.2.4.2.2 Characteristics of floating types <float.h>] A signaling NaN generally raises this kind of exception when occurring as an arithmetic operand.|floating-point|floating-point exception
[5.2.4.2.2 Characteristics of floating types <float.h>] This kind of NaN propagates through almost every arithmetic operation without raising a floating-point exception.|quiet|quiet NaN
[5.2.4.2.2 Characteristics of floating types <float.h>] This kind of NaN generally raises a floating-point exception when occurring as an arithmetic operand.|signaling|signaling NaN
[5.2.4.2.2 Characteristics of floating types <float.h>] Wherever floating-point values such as 0, infinity or NaN are unsigned, any requirement to retrieve the sign shall produce this sign.|unspecified
[5.2.4.2.2 Characteristics of floating types <float.h>] Wherever floating-point values such as 0, infinity or NaN are unsigned, any requirement to set the sign shall be this.|ignored
[5.2.4.2.2 Characteristics of floating types <float.h>] The rounding mode for floating-point addition is characterized by the implementation-defined value of this macro.|FLT_ROUNDS
[5.2.4.2.2 Characteristics of floating types <float.h>] The rounding mode for floating-point addition is characterized by the implementation-defined value of FLT_ROUNDS; when it is set to this value, it signifies indeterminable rounding.|-1
[5.2.4.2.2 Characteristics of floating types <float.h>] The rounding mode for floating-point addition is characterized by the implementation-defined value of FLT_ROUNDS; when it is set to this value, it signifies rounding toward zero.|0
[5.2.4.2.2 Characteristics of floating types <float.h>] The rounding mode for floating-point addition is characterized by the implementation-defined value of FLT_ROUNDS; when it is set to this value, it signifies rounding to nearest.|1
[5.2.4.2.2 Characteristics of floating types <float.h>] The rounding mode for floating-point addition is characterized by the implementation-defined value of FLT_ROUNDS; when it is set to this value, it signifies rounding toward positive infinity.|2
[5.2.4.2.2 Characteristics of floating types <float.h>] The rounding mode for floating-point addition is characterized by the implementation-defined value of FLT_ROUNDS; when it is set to this value, it signifies rounding toward negative infinity.|3
[5.2.4.2.2 Characteristics of floating types <float.h>] Except for assignment and cast, the values yielded by operators with floating operands are evaluated in a format characterized by the implementation-defined value of this macro.|FLT_EVAL_METHOD
[5.2.4.2.2 Characteristics of floating types <float.h>] Except for assignment and cast, the values yielded by operators with floating operands are evaluated in a format characterized by the implementation-defined value of FLT_EVAL_METHOD; when it is set to this value, it signifies indeterminable evaluation format.|-1
[5.2.4.2.2 Characteristics of floating types <float.h>] Except for assignment and cast, the values yielded by operators with floating operands are evaluated in a format characterized by the implementation-defined value of FLT_EVAL_METHOD; when it is set to this value, it signifies all operations and constants are evaluated just to the range and precision of the type.|0
[5.2.4.2.2 Characteristics of floating types <float.h>] Except for assignment and cast, the values yielded by operators with floating operands are evaluated in a format characterized by the implementation-defined value of FLT_EVAL_METHOD; when it is set to this value, it signifies operations and constants of type float and double are evaluated to the range and precision of the double type.|1
[5.2.4.2.2 Characteristics of floating types <float.h>] Except for assignment and cast, the values yielded by operators with floating operands are evaluated in a format characterized by the implementation-defined value of FLT_EVAL_METHOD; when it is set to this value, it signifies all operations and constants are evaluated to the range and precision of the long double type.|2
[5.2.4.2.2 Characteristics of floating types <float.h>] The presence or absence of floating-point subnormal numbers is characterized by the implementation-defined values of FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, and LDBL_HAS_SUBNORM; when it is set to this value, it signifies that it is indeterminable whether subnormal numbers are present.|-1
[5.2.4.2.2 Characteristics of floating types <float.h>] The presence or absence of floating-point subnormal numbers is characterized by the implementation-defined values of FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, and LDBL_HAS_SUBNORM; when it is set to this value, it signifies that subnormal numbers are absent (type does not support subnormal numbers).|0
[5.2.4.2.2 Characteristics of floating types <float.h>] The presence or absence of floating-point subnormal numbers is characterized by the implementation-defined values of FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, and LDBL_HAS_SUBNORM; when it is set to this value, it signifies that subnormal numbers are present (type does support subnormal numbers).|1
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum value for the radix of exponent representation.|FLT_RADIX
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number of base-FLT_RADIX digits in the floating-point significand.|FLT_MANT_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number of base-FLT_RADIX digits in the double-precision floating-point significand.|DBL_MANT_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number of base-FLT_RADIX digits in the long double-precision floating-point significand.|LDBL_MANT_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number of decimal digits, n, such that any floating-point number with p radix b digits can be rounded to a floating-point number with n decimal digits and back again without change to the value.|FLT_DECIMAL_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number of decimal digits, n, such that any double-precision floating-point number with p radix b digits can be rounded to a floating-point number with n decimal digits and back again without change to the value.|DBL_DECIMAL_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number of decimal digits, n, such that any long double-precision floating-point number with p radix b digits can be rounded to a floating-point number with n decimal digits and back again without change to the value.|LDBL_DECIMAL_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number of decimal digits, n, such that any floating-point number in the widest supported floating type with pmax radix b digits can be rounded to a floating-point number with n decimal digits and back again without change to the value.|DECIMAL_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number of decimal digits, q, such that any floating-point number with q decimal digits can be rounded into a floating-point number with p radix b digits and back again without change to the q decimal digits.|FLT_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number of decimal digits, q, such that any double-precision floating-point number with q decimal digits can be rounded into a floating-point number with p radix b digits and back again without change to the q decimal digits.|DBL_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the number number of decimal digits, q, such that any long double-precision floating-point number with q decimal digits can be rounded into a floating-point number with p radix b digits and back again without change to the q decimal digits.|LDBL_DIG
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum negative integer such that FLT_RADIX raised to one less than the power of that value is a normalized floating-point number.|FLT_MIN_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum negative integer such that FLT_RADIX raised to one less than the power of that value is a normalized double-precision floating-point number.|DBL_MIN_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum negative integer such that FLT_RADIX raised to one less than the power of that value is a normalized long double-precision floating-point number.|LDBL_MIN_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum negative integer such that 10 raised to the power of that value is in the range of normalized floating-point numbers.|FLT_MIN_10_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum negative integer such that 10 raised to the power of that value is in the range of normalized double-precision floating-point numbers.|DBL_MIN_10_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum negative integer such that 10 raised to the power of that value is in the range of normalized long double-precision floating-point numbers.|LDBL_MIN_10_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the maximum integer such that FLT_RADIX raised to one less than the power of that value is a representable finite floating-point number.|FLT_MAX_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the maximum integer such that FLT_RADIX raised to one less than the power of that value is a representable finite double-precision floating-point number.|DBL_MAX_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the maximum integer such that FLT_RADIX raised to one less than the power of that value is a representable finite long double-precision floating-point number.|LDBL_MAX_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the maximum integer such that 10 raised to the power of that value is in the range of representable finite floating-point numbers.|FLT_MAX_10_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the maximum integer such that 10 raised to the power of that value is in the range of representable finite double-precision floating-point numbers.|DBL_MAX_10_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the maximum integer such that 10 raised to the power of that value is in the range of representable finite long double-precision floating-point numbers.|LDBL_MAX_10_EXP
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the maximum representable finite floating-point number.|FLT_MAX
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the maximum representable finite double-precision floating-point number.|DBL_MAX
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the maximum representable finite long double-precision floating-point number.|LDBL_MAX
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the difference between 1 and the least value greater than 1 that is representable in the given floating point type.|FLT_EPSILON
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the difference between 1 and the least value greater than 1 that is representable in the given double-precision floating point type.|DBL_EPSILON
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the difference between 1 and the least value greater than 1 that is representable in the given long double-precision floating point type.|LDBL_EPSILON
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum normalized positive floating-point number.|FLT_MIN
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum normalized positive double-precision floating-point number.|DBL_MIN
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum normalized positive long double-precision floating-point number.|LDBL_MIN
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum positive floating-point number.|FLT_TRUE_MIN
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum positive double-precision floating-point number.|DBL_TRUE_MIN
[5.2.4.2.2 Characteristics of floating types <float.h>] Regarding floating types, this macro represents the minimum positive long double-precision floating-point number.|LDBL_TRUE_MIN
[5.2.4.2.2 Characteristics of floating types <float.h>] If the presence or absence of these numbers is indeterminable, then the value of the minimum positive floating-point number is intended to be a positive number no greater than the minimum normalized positive number for the type.|subnormal
[5.2.4.2.2 Characteristics of floating types <float.h>] If a type wider than double were supported, then DECIMAL_DIG would be greater than this value.|17
[5.2.4.2.2 Characteristics of floating types <float.h>] If a type wider than double were supported, then this macro would be greater than 17.|DECIMAL_DIG
[6.2.1 Scopes of identifiers] A member of this is called an enumeration constant.|enumeration|enum
[6.2.1 Scopes of identifiers] A member of an enumeration is called this.|enumeration constant|enum constant
[6.2.1 Scopes of identifiers] This is the only kind of identifier that has function scope.|label name|label
[6.2.1 Scopes of identifiers] A label name is the only kind of identifier that has this scope.|function
[6.2.1 Scopes of identifiers] If the declarator or type specifier that declares the identifier appears outside of any block or list of parameters, the identifier has this scope.|file{File scope identifiers terminate at the end of the translation unit.}
[6.2.1 Scopes of identifiers] If the declarator or type specifier that declares the identifier appears outside of any block or list of parameters, the identifier has file scope, which terminates at the end of this.|translation unit
[6.2.1 Scopes of identifiers] If the declarator or type specifier that declares the identifier appears inside a block or within the list of parameter declarations in a function definition, the identifier has this scope.|block{Block scope identifiers terminate at the end of the associated block.}
[6.2.1 Scopes of identifiers] If the declarator or type specifier that declares the identifier appears within the list of parameter declarations in a function prototype (not part of a function definition), the identifier has this scope.|function prototype{They terminate at the end of the function declarator.}|function prototype scope{They terminate at the end of the function declarator.}
[6.2.1 Scopes of identifiers] If an identifier designates two different entities in the same name space, the scopes might do this.|overlap{The scope of one entity (the inner scope) will end strictly before the scope of the other entity (the outer scope).}
[6.2.2 Linkages of identifiers] If the declaration of a file scope identifier for an object or a function contains the storage-class specifier static, the identifier has this linkage.|internal
[6.2.2 Linkages of identifiers] If the declaration of a file scope identifier for an object or a function contains this storage-class specifier, the identifier has internal linkage.|static
[6.2.2 Linkages of identifiers] A function declaration can contain this storage-class specifier only if it is at file scope.|static
[6.2.2 Linkages of identifiers] A function declaration can contain the storage-class specifier static only if it is at this scope.|file
[6.2.2 Linkages of identifiers] If no prior declaration is visible, or if the prior declaration specifies no linkage, then the identifier has this linkage.|external
[6.2.2 Linkages of identifiers] If the declaration of an identifier for a function has no storage-class specifier, its linkage is determined exactly as if it were declared with this storage-class specifier.|extern
[6.2.2 Linkages of identifiers] If the declaration of an identifier for an object has file scope and no storage-class specifier, it has this linkage.|external
[6.2.2 Linkages of identifiers] If the declaration of an identifier for an object has this scope and no storage-class specifier, its linkage is external.|file
[6.2.2 Linkages of identifiers] If, within a translation unit, the same identifier appears with both internal and external linkage, the behavior is this.|undefined
[6.2.3 Name spaces of identifiers] If more than one declaration of a particular identifier is visible at any point in a translation unit, this context disambiguates uses that refer to different entities.|syntactic context|syntactic|syntax
[6.2.4 Storage durations of objects] This exists, has a constant address, and retains its last-stored value throughout its lifetime.|object
[6.2.4 Storage durations of objects] An object whose identifier is declared without the storage-class specifier _Thread_local, and either with external or internal linkage or with the storage-class specifier static, has this storage duration.|static
[6.2.4 Storage durations of objects] An object whose identifier is declared with this storage-class specifier has thread storage duration.|_Thread_local
[6.2.4 Storage durations of objects] An object whose identifier is declared with the storage-class specifier _Thread_local has this storage duration.|thread
[6.2.4 Storage durations of objects] An object whose identifier is declared with no linkage and without the storage-class specifier static has this storage duration.|automatic|auto
[6.2.4 Storage durations of objects] The result of attempting to indirectly access an object with automatic storage duration from a thread other than the one with which the object is associated is this behavior.|implementation-defined
[6.2.4 Storage durations of objects] For an object with this storage duration, if a block is entered recursively, a new instance of the object is created each time.|automatic|auto
[6.2.4 Storage durations of objects] The initial value of an object with this storage duration is indeterminate.|automatic|auto
[6.2.4 Storage durations of objects] The initial value of an object with automatic storage duration is this.|indeterminate
[6.2.4 Storage durations of objects] If an initialization is specified for an object with this storage duration, it is performed each time the declaration or compound literal is reached in the execution of a block; otherwise, the value becomes indeterminate each time the declaration is reached.|automatic|auto
[6.2.4 Storage durations of objects] If an initialization is specified for an object with automatic storage duration, it is performed each time the declaration or compound literal is reached in the execution of a block; otherwise, the value becomes this each time the declaration is reached.|indeterminate
[6.2.5 Types] An object declared as this type is just large enough to store the values 0 and 1.|_Bool
[6.2.5 Types] An object declared as this type is just large enough to store any member of the basic execution character set.|char
[6.2.5 Types] If a member of the basic execution character set is stored in a char object, its value is guaranteed to be this.|nonnegative
[6.2.5 Types] There are these many standard signed integer types.|5{They are designated as signed char, short int, int, long int, and long long int.}|five{They are designated as signed char, short int, int, long int, and long long int.}
[6.2.5 Types] A computation involving unsigned operands can never do this.|overflow{This is because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type.}
[6.2.5 Types] The standard and extended signed integer types are collectively called this.|signed integer types
[6.2.5 Types] The standard and extended unsigned integer types are collectively called this.|unsigned integer types
[6.2.5 Types] The standard signed integer types and standard unsigned integer types are collectively called this.|standard integer types
[6.2.5 Types] The extended signed integer types and extended unsigned integer types are collectively called this.|extended integer types
[6.2.5 Types] There are this many complex types.|3{They are designated as float _Complex, double _Complex, and long double _Complex.}|three{They are designated as float _Complex, double _Complex, and long double _Complex.}
[6.2.5 Types] The real floating and complex types are collectively called this.|floating types
[6.2.5 Types] The type char, the signed and unsigned integer types, and the floating types are collectively called this.|basic types
[6.2.5 Types] The three types char, signed char, and unsigned char are collectively called this.|character types
[6.2.5 Types] The implementation shall define this to have the same range, representation, and behavior as either signed char or unsigned char.|char
[6.2.5 Types] This comprises a set of named integer constant values.|enumeration|enum
[6.2.5 Types] An enumeration comprises a set of these.|named integer constant values
[6.2.5 Types] This type describes a contiguously allocated nonempty set of objects with a particular member object type, called the element type.|array
[6.2.5 Types] An array type describes a contiguously allocated nonempty set of objects with a particular member object type, called this type.|element
[6.2.5 Types] The element type shall be this whenever the array type is specified.|complete
[6.2.5 Types] An array type is said to be derived from its element type, and if its element type is T, the array type is sometimes called this.|array of T
[6.2.5 Types] The construction of an array type from an element type is called this.|array type derivation
[6.2.5 Types] This type describes a sequentially allocated nonempty set of member objects (and, in certain circumstances, an incomplete array), each of which has an optionally specified name and possibly distinct type.|structure|struct
[6.2.5 Types] This type describes an overlapping nonempty set of member objects, each of which has an optionally specified name and possibly distinct type.|union
[6.2.5 Types] This type is characterized by its return type and the number and types of its parameters.|function
[6.2.5 Types] A function type is said to be derived from its return type, and if its return type is T, the function type is sometimes called this.|function returning T
[6.2.5 Types] The construction of a function type from a return type is called this.|function type derivation
[6.2.5 Types] This type describes an object whose value provides a reference to an entity of the referenced type.|pointer
[6.2.5 Types] A pointer type derived from the referenced type T is sometimes called this.|pointer to T
[6.2.5 Types] The construction of a pointer type from a referenced type is called this.|pointer type derivation
[6.2.5 Types] This type describes the type designated by the construct _Atomic (type-name).|atomic
[6.2.5 Types] An array type of unknown size is this kind of type.|incomplete
[6.2.5 Types] A type has known constant size if the type is not incomplete and is not this type of array.|VLA{VLA stands for variable length array.}|variable length|variable length array
[6.2.5 Types] A pointer to void shall have the same representation and alignment requirements as a pointer to this type.|char|character
[6.2.6.1 General] Values stored in unsigned bit-fields and objects of type unsigned char shall be represented using this notation.|binary|pure binary|pure binary notation
[6.2.6.1 General] A value may be copied into an object of type unsigned char [n] (e.g., by memcpy); the resulting set of bytes is called this.|object representation
[6.2.6.1 General] Certain object representations need not represent a value of the object type. Such a representation is called this.|trap representation|trap
[6.2.6.1 General] When a value is stored in a member of an object of this type, the bytes of the object representation that do not correspond to that member but do correspond to other members take unspecified values.|union
[6.2.6.2 Integer types] For unsigned integer types other than unsigned char, the bits of the object representation shall be divided into these two groups of bits (name both, separated by "and").|value and padding{There need not be any padding bits.}|padding and value{There need not be any padding bits.}
[6.2.6.2 Integer types] If there are N value bits in an integer type, each bit shall represent a different power of 2 between 1 and 2 to the power of N - 1, so that objects of that type shall be capable of representing values from 0 to 2 to the power of N - 1 using a pure binary representation; this shall be known as this.|value representation
[6.2.6.2 Integer types] For signed integer types, the bits of the object representation shall be divided into three groups: value bits, padding bits, and the sign bit. There need not be any padding bits, and this type shall not have any padding bits.|char|signed char
[6.2.6.2 Integer types] Signed integer types shall have exactly this many sign bits.|one|1
[6.2.6.2 Integer types] It is implementation-defined whether the value with sign bit 1 and all value bits zero (for the first two), or with sign bit and all value bits 1 (for ones' complement), is a trap representation or a normal value. In the case of sign and magnitude and ones' complement, if this representation is a normal value it is called this.|negative zero|-0
[6.2.6.2 Integer types] For any integer type, the object representation where all of these are zero shall be a representation of the value zero in that type.|bits
[6.2.6.2 Integer types] Of an integer type, this is the number of bits it uses to represent values, excluding any sign and padding bits.|precision
[6.2.6.2 Integer types] Of an integer type, this is the number of bits it uses to represent values, including any sign and padding bits.|width
[6.2.7 Compatible type and composite type] For two structures to be compatible, corresponding members shall be declared in this.|same order
[6.2.7 Compatible type and composite type] For two structures or unions to be compatible, corresponding bit-fields shall have the same this.|width|widths
[6.2.7 Compatible type and composite type] For two enumerations to be compatible, corresponding members shall have the same this.|values|value
[6.2.7 Compatible type and composite type] This kind of type can be constructed from two types that are compatible; it is a type that is compatible with both of the two types.|composite|composite type
[6.2.8 Alignment of objects] This is an implementation-defined integer value representing the number of bytes between successive addresses at which a given object can be allocated.|alignment
[6.2.8 Alignment of objects] This kind of alignment is represented by an alignment less than or equal to the greatest alignment supported by the implementation in all contexts, which is equal to _Alignof (max_align_t).|fundamental
[6.2.8 Alignment of objects] This kind of alignment is represented by an alignment greater than _Alignof (max_align_t).|extended
[6.2.8 Alignment of objects] A type having an extended alignment requirement is called this.|over-aligned|over-aligned type
[6.2.8 Alignment of objects] Every valid alignment value shall be in this domain.|nonnegative integral power of two|positive integral power of two|integral power of two|power of two|power of 2|nonnegative integral power of 2|positive integral power of 2|integral power of 2
[6.2.8 Alignment of objects] This type shall have the weakest alignment requirement.|char{In any of its variants: plain, unsigned or signed.}
[6.2.8 Alignment of objects] When an alignment is compared as this to another it represents a stricter alignment.|larger|bigger|greater
[6.3.1.1 Boolean, characters, and integers] The rank of a signed integer type shall compare as this to the rank of any signed integer type with less precision.|greater|larger|bigger
[6.3.1.1 Boolean, characters, and integers] The rank of this type shall be less than the rank of all other standard integer types.|_Bool
[6.3.1.1 Boolean, characters, and integers] If an int can represent all values of the original integer type (as restricted by the width, for a bit-field), the value is converted to an int; otherwise, it is converted to an unsigned int. This conversion is called this.|integer promotions|integer promotion
[6.3.1.2 Boolean type] When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is this.|1{That was an easy one.}|one{That was an easy one.}
[6.3.1.3 Signed and unsigned integers] When a value with integer type is converted to another integer type other than _Bool, if the value can be represented by the new type, it is unchanged. Otherwise, if the new type is this, the value is converted by repeatedly adding or subtracting one more than the maximum value that can be represented in the new type until the value is in its range.|unsigned
[6.3.1.4 Real floating and integer] When a finite value of real floating type is converted to an integer type other than _Bool, this part of the value is discarded.|fractional
[6.3.1.4 Real floating and integer] If the value of integer type being converted to a real floating type is in the range of values that can be represented but cannot be represented exactly, the result is either the nearest higher or nearest lower representable value, chosen in this manner.|implementation-defined
[6.3.1.7 Real and complex] When a value of complex type is converted to a real type, this part of the complex value is discarded.|imaginary
[6.3.2.1 Lvalues, arrays, and function designators] This is an expression (with an object type other than void) that designates an object.|lvalue
[6.3.2.1 Lvalues, arrays, and function designators] This is an lvalue that does not have array type, does not have an incomplete type, does not have a const-qualified type, and if it is a structure or union, does not have any member (including, recursively, any member or element of all contained aggregates or unions) with a const-qualified type.|modifiable lvalue
[6.3.2.1 Lvalues, arrays, and function designators] An obvious example of this is an identifier of an object.|lvalue
[6.3.2.1 Lvalues, arrays, and function designators] Except when it is the operand of the sizeof operator, the _Alignof operator, the unary & operator, the ++ operator, the -- operator, or the left operand of the . operator or an assignment operator, an lvalue that does not have array type is converted to the value stored in the designated object; this conversion is called this.|lvalue conversion
[6.3.2.1 Lvalues, arrays, and function designators] Except when it is the operand of the sizeof operator, the _Alignof operator, or the unary & operator, or is a string literal used to initialize an array, an expression that has type ``array of type'' is converted to an expression with this type.|pointer to type|pointer
[6.3.2.2 void] If an expression is evaluated as a void expression, this is discarded.|value{A void expression is evaluated for its side effects.}|its value{A void expression is evaluated for its side effects.}
[6.3.2.2 void] A void expression is evaluated for this.|side effects|its side effects
[6.3.2.2 void] This kind of expression is evaluated solely for its side effects.|void|void expression
[6.3.2.3 Pointers] A pointer to any object type may be converted to this and back again; the result shall compare equal to the original pointer.|pointer to void|void *|void*
[6.3.2.3 Pointers] An integer constant expression with the value 0, or such an expression cast to type void *, is called this.|null pointer constant
[6.3.2.3 Pointers] If a null pointer constant is converted to a pointer type, the resulting pointer is called this.|null pointer
[6.3.2.3 Pointers] If a null pointer constant is converted to a pointer type, the resulting pointer, called a null pointer, is guaranteed to compare as this to a pointer to any object or function.|unequal|not equal
[6.3.2.3 Pointers] The mapping functions for converting a pointer to an integer or an integer to a pointer are intended to be consistent with this of the execution environment.|addressing structure
[6.3.2.3 Pointers] An integer may be converted to any pointer type. The result for an integer other than zero is this kind of behavior, might not be correctly aligned, might not point to an entity of the referenced type, and might be a trap representation.|implementation defined
[6.3.2.3 Pointers] When a pointer to an object is converted to a pointer to a character type, the result points to this addressed byte of the object.|lowest|first
[6.3.2.3 Pointers] If a pointer type to A is correctly aligned for a pointer to type B, which in turn is correctly aligned for a pointer to type C, then a pointer to type A is correctly aligned for a pointer to this type.|C
[6.3.2.3 Pointers] A pointer to a function of one type may be converted to a pointer to a function of another type and back again; the result shall compare as this to the original pointer.|equal
[6.3.2.3 Pointers] If a converted pointer is used to call a function whose type is not compatible with the referenced type, the behavior is this.|undefined
[6.4 Lexical elements] This is the minimal lexical element of the language in translation phases 7 and 8.|token
[6.4 Lexical elements] This is the minimal lexical element of the language in translation phases 3 through 6.|preprocessing token
[6.4.2.1 General] This is a sequence of nondigit characters (including the underscore _, the lowercase and uppercase Latin letters, and other characters) and digits, which designates one or more entities.|identifier
[6.4.2.1 General] An implementation may allow multibyte characters that are not part of the basic source character set to appear in these.|identifiers
[6.4.2.1 General] When preprocessing tokens are converted to tokens during translation phase 7, if a preprocessing token could be converted to either a keyword or an identifier, it is converted to this.|keyword
[6.4.2.2 Predefined identifiers] This identifier shall be implicitly declared by the translator as if, immediately following the opening brace of each function definition, the declaration static const char this[] = "function-name"; appeared, where function-name is the name of the lexically-enclosing function.|__func__
[6.4.3 Universal character names] This kind of character name shall not specify a character whose short identifier is less than 00A0 other than 0024 ($), 0040 (@), or 0060 (`), nor one in the range D800 through DFFF inclusive.|universal
[6.4.4.1 Integer constants] This kind of constant begins with a nonzero digit and consists of a sequence of decimal digits.|decimal
[6.4.4.1 Integer constants] This kind of constant consists of the prefix 0 optionally followed by a sequence of the digits 0 through 7 only.|octal
[6.4.4.1 Integer constants] This kind of constant consists of the prefix 0x or 0X followed by a sequence of the decimal digits and the letters a (or A) through f (or F) with values 10 through 15 respectively.|hexadecimal
[6.4.4.2 Floating constants] If a floating constant is suffixed by the letter f or F, it has this type.|float
[6.4.4.2 Floating constants] If a floating constant is suffixed by the letter l or L, it has this type.|long double
[6.4.4.2 Floating constants] The conversion of this kind of constant shall not raise an exceptional condition or a floating-point exception at execution time.|floating
[6.4.4.3 Enumeration constants] An identifier declared as an enumeration constant has this type.|int
[6.4.4.4 Character constants] This kind of constant is a sequence of one or more multibyte characters enclosed in single-quotes.|integer character constant|integer character
[6.4.4.4 Character constants] This kind of constant is a sequence of one or more multibyte characters enclosed in single-quotes and prefixed by the letter L, u, or U.|wide character constant|wide character
[6.4.4.4 Character constants] The value of an octal or hexadecimal escape sequence in a character constant shall be in the range of representable values for this type if not prefixed.|unsigned char
[6.4.4.4 Character constants] The value of an octal or hexadecimal escape sequence in a character constant shall be in the range of representable values for the unsigned type corresponding to this type if prefixed with L.|wchar_t
[6.4.4.4 Character constants] The value of an octal or hexadecimal escape sequence in a character constant shall be in the range of representable values for this type if prefixed with u.|char16_t
[6.4.4.4 Character constants] The value of an octal or hexadecimal escape sequence in a character constant shall be in the range of representable values for this type if prefixed with U.|char32_t
[6.4.4.4 Character constants] If an integer character constant contains a single character or escape sequence, its value is the one that results when an object with type char whose value is that of the single character or escape sequence is converted to this type.|int
[6.4.5 String literals] A sequence of these string literal tokens shall not include both a wide string literal and a UTF-8 string literal.|adjacent
[6.4.5 String literals] This kind of string literal is a sequence of zero or more multibyte characters enclosed in double-quotes.|character|character string literal
[6.4.5 String literals] This kind of string literal is a sequence of zero or more multibyte characters enclosed in double-quotes and prefixed by u8.|UTF8|UTF-8|UTF-8 string literal
[6.4.5 String literals] This kind of string literal is a sequence of zero or more multibyte characters enclosed in double-quotes and  prefixed by the letter L, u, or U.|wide|wide string literal
[6.4.5 String literals] In this translation phase, the multibyte character sequences specified by any sequence of adjacent character and identically-prefixed string literal tokens are concatenated into a single multibyte character sequence.|6|six
[6.4.5 String literals] In translation phase 6, the multibyte character sequences specified by any sequence of adjacent character and identically-prefixed string literal tokens are this into a single multibyte character sequence.|concatenated
[6.4.5 String literals] When adjacent string literals are concatenated together in translation phase 6, if any of the tokens has an encoding prefix, the resulting multibyte character sequence is treated as having the same prefix; otherwise, it is treated as this kind of string literal.|character|character string literal
[6.4.5 String literals] If the program attempts to do this to a string literal, the behavior is undefined.|modify
[6.4.6 Punctuators] A punctuator may specify an operation to be performed (which in turn may yield a value or a function designator, produce a side effect, or some combination thereof) in which case it is known as this.|operator
[6.4.6 Punctuators] This is an entity on which an operator acts.|operand
[6.4.6 Punctuators] The following tokens, <: :> <% %> %: and %:%:, are known as these.|digraphs
[6.4.7 Header names] If the characters ', \, ", //, or /* occur in the sequence between the < and > delimiters of this preprocessing directive, the behavior is undefined.|#include
[6.5 Expressions] A sequence of operators and operands that specifies computation of a value, or that designates an object or a function, or that generates side effects, or that performs a combination thereof, is called this.|expression
[6.5 Expressions] If a side effect on a scalar object is this relative to either a different side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is undefined.|unsequenced
[6.5 Expressions] If a side effect on a scalar object is unsequenced relative to either a different side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is this.|undefined
[6.5 Expressions] If there are multiple allowable orderings of the subexpressions of an expression, the behavior is undefined if this occurs in any of the orderings.|unsequenced side effect
[6.5 Expressions] This is specified by the syntax of the grouping of operators and operands in the evaluation of an expression.|precedence|precedence of operators
[6.5 Expressions] The unary operator ~, and the binary operators <<, >>, &, ^, and \| are collectively described as this.|bitwise operators
[6.5 Expressions] The result of this operator is the bitwise complement of its operand.|unary ~|~
[6.5 Expressions] The result of this operator is its left operand shifted the number of bit positions left designated by its right operand.|binary <<|<<
[6.5 Expressions] The result of this operator is its left operand shifted the number of bit positions right designated by its right operand.|binary >>|>>
[6.5 Expressions] The result of this operator is the bitwise-AND of its operands.|binary &|&
[6.5 Expressions] The result of this operator is the exclusive-OR of its operands.|binary ^|^
[6.5 Expressions] The result of this operator is the bitwise-OR of its operands.|binary \||\|
[6.5 Expressions] The bitwise operators are required to have operands that have this kind of type.|integer
[6.5 Expressions] If the result of the evaluation of an expression is not mathematically defined or not in the range of representable values for its type, this kind of condition occurs.|exceptional|exceptional condition
[6.5 Expressions] If an exceptional condition occurs during the evaluation of an expression (that is, if the result is not mathematically defined or not in the range of representable values for its type), the behavior is this.|undefined
[6.5 Expressions] If a value is stored into an object having no declared type through an lvalue having a type that is not a character type, then the type of the lvalue becomes this type of the object for that access and for subsequent accesses that do not modify the stored value.|effective|effective type
[6.5 Expressions] When a floating expression is evaluated as though it were a single operation, thereby omitting rounding errors implied by the source code and the expression evaluation method, it is called this.|contracted expression|contracted
[6.5 Expressions] This pragma in <math.h> provides a way to disallow contracted expressions.|FP_CONTRACT
[6.5.1.1 Generic selection] A generic selection shall have no more than this many default generic associations.|one|1
[6.5.1.1 Generic selection] The type name in a generic association shall specify a complete object type other than this kind of type.|variably modified type|variably modified
[6.5.1.1 Generic selection] No two generic associations in the same generic selection shall specify this kind types.|compatible
[6.5.1.1 Generic selection] If a generic selection does not have one of this, its controlling expression shall have type compatible with exactly one of the types named in its generic association list.|default generic association|default association
[6.5.2.1 Array subscripting] One of the expressions of an array subscript shall have type ``pointer to complete object type'', the other expression shall have this type, and the result has type ``type''.|integer
[6.5.2.1 Array subscripting] A postfix expression followed by an expression in these is a subscripted designation of an element of an array object.|square brackets|[]|brackets
[6.5.2.1 Array subscripting] Regarding array subscripting, the expression x[i] is equivalent to this (no spaces).|(*((x)+(i)))|*((x)+(i))
[6.5.2.1 Array subscripting] Regarding array subscripting, this expression is equivalent to (*((x)+(i))).|x[i]
[6.5.2.2 Function calls] If the expression that denotes the called function has a type that includes this, the number of arguments shall agree with the number of parameters.|prototype
[6.5.2.2 Function calls] A postfix expression followed by parentheses () containing a possibly empty, comma-separated list of expressions is called this.|function call
[6.5.2.2 Function calls] If the expression that denotes the called function has a type that does not include a prototype, the integer promotions are performed on each argument, and arguments that have type float are promoted to double. These are called this.|default argument promotions
[6.5.2.2 Function calls] If the expression that denotes the called function has a type that does not include this, the integer promotions are performed on each argument, and arguments that have type float are promoted to double. These are called the default argument promotions.|prototype
[6.5.2.2 Function calls] If the expression that denotes the called function has a type that does include this, the arguments are implicitly converted, as if by assignment, to the types of the corresponding parameters, taking the type of each parameter to be the unqualified version of its declared type.|prototype
[6.5.2.2 Function calls] If the expression that denotes the called function has a type that does include a prototype, the arguments are implicitly converted, as if by this, to the types of the corresponding parameters, taking the type of each parameter to be the unqualified version of its declared type.|assignment
[6.5.2.2 Function calls] This kind of function call shall be permitted, both directly and indirectly through any chain of other functions.|recursive
[6.5.2.2 Function calls] In the function call (*pf[f1()]) (f2(), f3() + f4()) the functions f1, f2, f3, and f4 may be called in any order. However, all of these must be completed before the function pointed to by pf[f1()] is called.|side effects
[6.5.2.3 Structure and union members] The first operand of this operator shall have an atomic, qualified, or unqualified structure or union type, and the second operand shall name a member of that type.|.
[6.5.2.3 Structure and union members] The first operand of this operator shall have type ``pointer to atomic, qualified, or unqualified structure'' or ``pointer to atomic, qualified, or unqualified union'', and the second operand shall name a member of the type pointed to.|->
[6.5.2.3 Structure and union members] If the member used to read the contents of this kind of object is not the same as the member last used to store a value in the object, the appropriate part of the object representation of the value is reinterpreted as an object representation in the new type.|union{This process is sometimes called ``type punning''.}
[6.5.2.3 Structure and union members] If the member used to read the contents of a union object is not the same as the member last used to store a value in the object, the appropriate part of the object representation of the value is reinterpreted as an object representation in the new type. This process is sometimes called this.|type punning
[6.5.2.4 Postfix increment and decrement operators] The result of this operator is the value of the operand. As a side effect, the value of the operand object is incremented.|postfix ++
[6.5.2.4 Postfix increment and decrement operators] The result of this operator is the value of the operand. As a side effect, the value of the operand object is decremented.|postfix --
[6.5.2.5 Compound literals] The type name of a compound literal shall specify a complete object type or an array of unknown size, but not this type.|VLA{VLA stands for variable length array.}|variable length array
[6.5.2.5 Compound literals] A postfix expression that consists of a parenthesized type name followed by a brace-enclosed list of initializers is called this.|compound literal
[6.5.2.5 Compound literals] If the type name specifies an array of unknown size, the size is determined by this, and the type of the compound literal is that of the completed array type.|initializer list
[6.5.2.5 Compound literals] If a compound literal occurs outside the body of a function, the object has this storage duration.|static
[6.5.3.1 Prefix increment and decrement operators] The value of the operand of this operator is incremented. The result is the new value of the operand after incrementation.|prefix ++
[6.5.3.1 Prefix increment and decrement operators] The value of the operand of this operator is decremented. The result is the new value of the operand after decrementation.|prefix --
[6.5.3.2 Address and indirection operators] The operand of this operator shall be either a function designator, the result of a [] or unary * operator, or an lvalue that designates an object that is not a bit-field and is not declared with the register storage-class specifier.|unary &|&
[6.5.3.2 Address and indirection operators] The operand of the unary * operator shall have this kind of type.|pointer
[6.5.3.2 Address and indirection operators] This operator yields the address of its operand.|unary &|&
[6.5.3.2 Address and indirection operators] The unary & operator yields this of its operand.|address
[6.5.3.2 Address and indirection operators] If the operand of the unary & operator has type ``type'', the result has this type.|pointer to type|pointer
[6.5.3.2 Address and indirection operators] If the operand of the unary & operator is the result of this operator, neither that operator nor the & operator is evaluated and the result is as if both were omitted, except that the constraints on the operators still apply and the result is not an lvalue.|unary *|*
[6.5.3.2 Address and indirection operators] The result of this operator is a pointer to the object or function designated by its operand.|unary &|&
[6.5.3.2 Address and indirection operators] This operator denotes indirection.|unary *|*
[6.5.3.2 Address and indirection operators] This is denoted by the unary * operator.|indirection
[6.5.3.2 Address and indirection operators] If the operand of the unary * operator has type ``pointer to type'', the result has this type.|type
[6.5.3.3 Unary arithmetic operators] The operand of the unary + or - operator shall have this kind of type.|arithmetic
[6.5.3.3 Unary arithmetic operators] The operand of the unary ~ operator shall have this kind of type.|integer
[6.5.3.3 Unary arithmetic operators] The operand of the unary ! operator shall have this kind of type.|scalar
[6.5.3.3 Unary arithmetic operators] If the type of the ~ operator is this kind of type, the expression ~E is equivalent to the maximum value representable in that type minus E.|unsigned
[6.5.3.4 The sizeof and _Alignof operators] This operator shall not be applied to an expression that has function type or an incomplete type, to the parenthesized name of such a type, or to an expression that designates a bit-field member.|sizeof|_Alignof
[6.5.3.4 The sizeof and _Alignof operators] If the type of the operand of sizeof is this kind type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an integer constant.|variable length array|VLA{VLA stands for variable length array.}
[6.5.3.4 The sizeof and _Alignof operators] If the type of the operand of sizeof is a variable length array type, the operand is evaluated; otherwise, the operand is not evaluated and the result is this.|integer constant
[6.5.3.4 The sizeof and _Alignof operators] When this operator is applied to an array type, the result is the alignment requirement of the element type.|_Alignof
[6.5.3.4 The sizeof and _Alignof operators] When the sizeof operator is applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is this.|1|one
[6.5.3.4 The sizeof and _Alignof operators] When this operator is applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is 1.|sizeof
[6.5.3.4 The sizeof and _Alignof operators] When this operator is applied to an operand that has array type, the result is the total number of bytes in the array. When applied to an operand that has structure or union type, the result is the total number of bytes in such an object, including internal and trailing padding.|sizeof
[6.5.3.4 The sizeof and _Alignof operators] When applied to a parameter declared to have array or function type, the sizeof operator yields the size of this type.|pointer
[6.5.3.4 The sizeof and _Alignof operators] When applied to a parameter declared to have array or function type, this operator yields the size of the adjusted (pointer) type.|sizeof
[6.5.3.4 The sizeof and _Alignof operators] When applied to a parameter declared to have this type, the sizeof operator yields the size of the adjusted (pointer) type.|array{Or function type, as well.}|function{Or array type, as well.}
[6.5.4 Cast operators] Conversions that involve pointers, except where permitted by the constraints of simple assignment, shall be specified by means of this kind of cast.|explicit
[6.5.4 Cast operators] A pointer type shall not be converted (as by cast) to this kind of type.|floating
[6.5.4 Cast operators] A floating type shall not be converted (as by cast) to this kind of type.|pointer
[6.5.4 Cast operators] Preceding an expression by a parenthesized type name converts the value of the expression to the named type. This construction is called this.|cast
[6.5.5 Multiplicative operators] Each of the operands of multiplicative operators shall have this kind of type.|arithmetic
[6.5.5 Multiplicative operators] The operands of the % operator shall have this kind of type.|integer
[6.5.5 Multiplicative operators] The result of this operator is the product of the operands.|binary *|*
[6.5.5 Multiplicative operators] The result of this operator is the quotient from the division of the first operand by the second.|binary /|/
[6.5.5 Multiplicative operators] The result of the / operator is this from the division of the first operand by the second.|quotient
[6.5.5 Multiplicative operators] The result of the % operator is this from the division of the first operand by the second.|remainder
[6.5.5 Multiplicative operators] The result of this operator is the remainder from the division of the first operand by the second.|binary %|%
[6.5.5 Multiplicative operators] When integers are divided, the result of the / operator is the algebraic quotient with this part discarded.|fractional{This is called ``truncation towards zero``.}
[6.5.6 Additive operators] For addition, either both operands shall have this type, or one operand shall be a pointer to a complete object type and the other shall have integer type.|arithmetic
[6.5.6 Additive operators] For addition, either both operands shall have arithmetic type, or one operand shall be a pointer to a complete object type and the other shall have this type.|integer
[6.5.6 Additive operators] When an expression that has integer type is added to or subtracted from a pointer, the result has the type of this operand.|pointer
[6.5.6 Additive operators] When this happens to two pointers, both shall point to elements of the same array object, or one past the last element of the array object; the result is the difference of the subscripts of the two array elements.|subtracted|subtraction
[6.5.7 Bitwise shift operators] Each of the operands for the bitwise shift operators shall have this kind type.|integer
[6.5.7 Bitwise shift operators] If the value of the right operand of a bitwise shift operator is this or is greater than or equal to the width of the promoted left operand, the behavior is undefined.|negative
[6.5.7 Bitwise shift operators] The result of E1 << E2 is E1 left-shifted E2 bit positions; vacated bits are filled with these.|zeros|zero|0
[6.5.7 Bitwise shift operators] The result of E1 << E2 is E1 left-shifted E2 bit positions. If E1 has a signed type and a negative value, the resulting value is this.|implementation-defined
[6.5.8 Relational operators] When two pointers are compared, the result depends on the relative locations in this of the objects pointed to.|address space
[6.5.8 Relational operators] If two pointers to object types both point to the same object, or both point one past the last element of the same array object, they compare as this.|equal
[6.5.8 Relational operators] If the expression P points to an element of an array object and the expression Q points to the last element of the same array object, the pointer expression Q+1 compares as this to P.|greater than|>|greater
[6.5.8 Relational operators] Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false. The result has this type.|int
[6.5.9 Equality operators] Two pointers compare as this if one is a pointer to one past the end of one array object and the other is a pointer to the start of a different array object that happens to immediately follow the first array object in the address space.|equal
[6.5.13 Logical AND operator] Each of the operands of the && operator shall have this kind of type.|scalar
[6.5.13 Logical AND operator] The && operator shall yield 1 if both of its operands compare as this to 0; otherwise, it yields 0.|unequal|not equal
[6.5.13 Logical AND operator] If the first operand of the && operator compares as this to 0, the second operand is not evaluated.|equal
[6.5.13 Logical AND operator] If the first operand of this operator compares as equal to 0, the second operand is not evaluated.|&&
[6.5.14 Logical OR operator] Each of the operands of the \|\| operator shall have this type.|scalar
[6.5.14 Logical OR operator] The \|\| operator shall yield 1 if either of its operands compare as this to 0; otherwise, it yields 0.|unequal|not equal
[6.5.14 Logical OR operator] If the first operand of the \|\| operator compares as this to 0, the second operand is not evaluated.|unequal|not equal
[6.5.14 Logical OR operator] If the first operand of this operator compares unequal to 0, the second operand is not evaluated.|\|\|
[6.5.15 Conditional operator] The first operand of the ?: operator shall have this kind of type.|scalar
[6.5.15 Conditional operator] The ?: operator is called this.|conditional operator|conditional
[6.5.15 Conditional operator] If both the second and third operands of the ?: operator have this type, the result has void type.|void
[6.5.16 Assignment operators] An assignment operator shall have this as its left operand.|modifiable lvalue
[6.5.16 Assignment operators] An assignment expression has the value of the left operand after the assignment, but is not this.|lvalue
[6.5.16.2 Compound assignment] An assignment of the form E1 op = E2 is equivalent to the simple assignment expression E1 = E1 op (E2) and is called this.|compound assignment
[6.6 Constant expressions] This kind of expression shall not contain assignment, increment, decrement, function-call, or comma operators, except when they are contained within a subexpression that is not evaluated.|constant expression|constant
[6.6 Constant expressions] This kind of expression shall have integer type and shall only have operands that are integer constants, enumeration constants, character constants, sizeof expressions whose results are integer constants, _Alignof expressions, and floating constants that are the immediate operands of casts.|integer constant expression{Sometimes referred to as ICE.}|integer constant|ICE{ICE stands for integer constant expression.}
[6.6 Constant expressions] Cast operators in this kind of expression shall only convert arithmetic types to integer types, except as part of an operand to the sizeof or _Alignof operator.|integer constant expression{Sometimes referred to as ICE.}|integer constant|ICE{ICE stands for integer constant expression.}
[6.6 Constant expressions] This kind of expression is required in a number of contexts such as the size of a bit-field member of a structure, the value of an enumeration constant, and the size of a non-variable length array.|integer constant expression{Sometimes referred to as ICE.}|integer constant|ICE{ICE stands for integer constant expression.}
[6.6 Constant expressions] This kind of expression shall have arithmetic type and shall only have operands that are integer constants, floating constants, enumeration constants, character constants, sizeof expressions whose results are integer constants, and _Alignof expressions.|arithmetic constant expression{Sometimes referred to as ACE.}|arithmetic constant|ACE{ACE stands for arithmetic constant expression.}
[6.6 Constant expressions] Cast operators in this kind of expression shall only convert arithmetic types to arithmetic types, except as part of an operand to a sizeof or _Alignof operator.|arithmetic constant expression{Sometimes referred to as ACE.}|arithmetic constant|ACE{ACE stands for arithmetic constant expression.}
[6.6 Constant expressions] This kind of constant is a null pointer, a pointer to an lvalue designating an object of static storage duration, or a pointer to a function designator.|address constant|address
[6.7 Declarations] A declaration other than this kind of declaration shall declare at least a declarator (other than the parameters of a function or the members of a structure or union), a tag, or the members of an enumeration.|static_assert
[6.7 Declarations] All declarations in the same scope that refer to the same object or function shall specify this kind of type.|compatible
[6.7 Declarations] This is a declaration for an identifier that: for an object, causes storage to be reserved for that object; for a function, includes the function body; for an enumeration constant, is the (only) declaration of the identifier; for a typedef name, is the first (or only) declaration of the identifier.|definition
[6.7 Declarations] If an identifier for an object is declared with this linkage, the type for the object shall be complete by the end of its declarator, or by the end of its init-declarator if it has an initializer; in the case of function parameters (including in prototypes), it is the adjusted type that is required to be complete.|no linkage|none
[6.7.1 Storage-class specifiers] In the declaration of an object with block scope, if the declaration specifiers include this storage-class specifier, they shall also include either static or extern.|_Thread_local
[6.7.1 Storage-class specifiers] If this storage-class specifier appears in any declaration of an object, it shall be present in every declaration of that object.|_Thread_local
[6.7.1 Storage-class specifiers] This storage-class specifier shall not appear in the declaration specifiers of a function declaration.|_Thread_local
[6.7.1 Storage-class specifiers] This specifier is called a ``storage-class specifier'' for syntactic convenience only.|typedef
[6.7.1 Storage-class specifiers] A declaration of an identifier for an object with this storage-class specifier suggests that access to the object be as fast as possible.|register
[6.7.1 Storage-class specifiers] The declaration of an identifier for a function that has block scope shall have no explicit storage-class specifier other than this.|extern
[6.7.1 Storage-class specifiers] If an aggregate or union object is declared with a storage-class specifier other than this, the properties resulting from the storage-class specifier, except with respect to linkage, also apply to the members of the object, and so on recursively for any aggregate or union member objects.|typedef{Trick question! typedef is called a storage-class specifier for syntactic convenience only.}
[6.7.2 Type specifiers] This type specifier shall not be used if the implementation does not support complex types.|_Complex
[6.7.2.1 Structure and union specifiers] A struct-declaration that does not declare an anonymous structure or anonymous union shall contain this.|named member
[6.7.2.1 Structure and union specifiers] The last member of a structure with more than one named member may have incomplete array type; it is called this.|flexible array member{Sometimes also called a FAM.}|FAM{FAM stands for flexible array member.}
[6.7.2.1 Structure and union specifiers] A structure containing this shall not be a member of a structure or an element of an array.|flexible array member{Sometimes also called a FAM.}|FAM{FAM stands for flexible array member.}
[6.7.2.1 Structure and union specifiers] The expression that specifies the width of a bit-field shall be this kind of expression.|integer constant expression{Sometimes referred to as ICE.}|integer constant|ICE{ICE stands for integer constant expression.}
[6.7.2.1 Structure and union specifiers] A structure or union may have a member declared to consist of a specified number of bits. Such a member is called this.|bit-field
[6.7.2.1 Structure and union specifiers] If enough space remains, a bit-field that immediately follows another bit-field in a structure shall be packed into adjacent bits of this.|same unit
[6.7.2.1 Structure and union specifiers] If insufficient space remains, whether a bit-field that does not fit is put into the next unit or overlaps adjacent units is this.|implementation-defined
[6.7.2.1 Structure and union specifiers] This structure member is useful for padding to conform to externally imposed layouts.|unnamed bit-field
[6.7.2.1 Structure and union specifiers] An unnamed bit-field structure member is useful for this to conform to externally imposed layouts.|padding
[6.7.2.1 Structure and union specifiers] An unnamed member whose type specifier is a structure specifier with no tag is called this.|anonymous structure
[6.7.2.1 Structure and union specifiers] An unnamed member whose type specifier is a union specifier with no tag is called this.|anonymous union
[6.7.2.1 Structure and union specifiers] A pointer to this object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa.|structure|struct
[6.7.2.1 Structure and union specifiers] A pointer to this object, suitably converted, points to each of its members (or if a member is a bit-field, then to the unit in which it resides), and vice versa.|union
[6.7.2.1 Structure and union specifiers] There may be unnamed padding within a structure object, but not at this location.|beginning
[6.7.2.1 Structure and union specifiers] If this member of a structure would have no elements, it behaves as if it had one element but the behavior is undefined if any attempt is made to access that element or to generate a pointer one past it.|flexible array member{Sometimes also called a FAM.}|FAM{FAM stands for flexible array member.}
[6.7.2.2 Enumeration specifiers] The expression that defines the value of an enumeration constant shall be an integer constant expression that has a value representable as this type.|int
[6.7.2.2 Enumeration specifiers] The expression that defines the value of an enumeration constant shall be this kind of expression that has a value representable as an int.|integer constant expression{Sometimes referred to as ICE.}|integer constant|ICE{ICE stands for integer constant expression.}
[6.7.2.2 Enumeration specifiers] If the first enumerator has no =, the value of its enumeration constant is this value.|zero|0
[6.7.2.3 Tags] This kind of type may only by used when the size of an object of that type is not needed.|incomplete
[6.7.2.4 Atomic type specifiers] Atomic type specifiers shall not be used if the implementation does not support this kind of types.|atomic{That was kind of obvious, wasn't it?}
[6.7.2.4 Atomic type specifiers] If the _Atomic keyword is immediately followed by this, it is interpreted as a type specifier (with a type name), not as a type qualifier.|left parenthesis
[6.7.3 Type qualifiers] Types other than pointer types whose referenced type is an object type shall not be qualified with this type qualifier.|restrict
[6.7.3 Type qualifiers] The type modified by this type qualifier shall not be an array type or a function type.|_Atomic
[6.7.3 Type qualifiers] If the same qualifier appears more than once in the same specifier-qualifier-list, either directly or via one or more typedefs, the behavior is the same as if it appeared this many times.|1|one|once
[6.7.3 Type qualifiers] If other qualifiers appear along with this qualifier in a specifier-qualifier-list, the resulting type is the so-qualified atomic type.|_Atomic
[6.7.3 Type qualifiers] If an attempt is made to modify an object defined with a const-qualified type through use of an lvalue with non-const-qualified type, the behavior is this.|undefined
[6.7.3 Type qualifiers] If an attempt is made to refer to an object defined with a volatile-qualified type through use of an lvalue with non-volatile-qualified type, the behavior is this.|undefined
[6.7.3 Type qualifiers] What constitutes an access to an object that has volatile-qualified type is this.|implementation-defined
[6.7.3 Type qualifiers] What constitutes an access to an object that has this qualified type is implementation-defined.|volatile
[6.7.3 Type qualifiers] Actions on objects declared with this type qualifier shall not be ``optimized out'' by an implementation or reordered except as permitted by the rules for evaluating expressions.|volatile
[6.7.3 Type qualifiers] An object that is accessed through a pointer qualified with this type qualifier has a special association with that pointer. This association requires that all accesses to that object use, directly or indirectly, the value of that particular pointer.|restrict{The intended use of the restrict qualifier is to promote optimization.}
[6.7.3 Type qualifiers] If the specification of an array type includes any type qualifiers, this type is so-qualified, not the array type.|element type|element
[6.7.3 Type qualifiers] If the specification of a function type includes any type qualifiers, the behavior is this.|undefined
[6.7.3.1 Formal definition of restrict] A translator is free to ignore any or all aliasing implications of uses of this type qualifier.|restrict
[6.7.4 Function specifiers] Function specifiers shall be used only in the declaration of an identifier for this.|function{That was kind of obvious, wasn't it?}
[6.7.4 Function specifiers] In a hosted environment, no function specifier(s) shall appear in a declaration of this function.|main
[6.7.4 Function specifiers] A function specifier may appear more than once; the behavior is the same as if it appeared this many times.|1|one|once
[6.7.4 Function specifiers] A function declared with this function specifier is an inline function.|inline{That was kind of obvious, wasn't it?}
[6.7.4 Function specifiers] If a function with external linkage is declared with this function specifier, then it shall also be defined in the same translation unit.|inline
[6.7.4 Function specifiers] A function declared with this function specifier shall not return to its caller.|_Noreturn
[6.7.5 Alignment specifier] This attribute shall not be specified in a declaration of a typedef, or a bit-field, or a function, or a parameter, or an object declared with the register storage-class specifier.|alignment
[6.7.5 Alignment specifier] The constant expression to the _Alignas specifier shall be this kind of expression.|integer constant expression{Sometimes referred to as ICE.}|integer constant|ICE{ICE stands for integer constant expression.}
[6.7.5 Alignment specifier] The expression to the _Alignas specifier shall evaluate to a valid fundamental alignment, or to a valid extended alignment supported by the implementation in the context in which it appears, or to this.|0|zero
[6.7.5 Alignment specifier] When multiple alignment specifiers occur in a declaration, the effective alignment requirement is this specified alignment.|strictest
[6.7.5 Alignment specifier] If the definition of an object has an alignment specifier, any other declaration of that object shall either specify this kind of alignment or have no alignment specifier.|equivalent
[6.7.5 Alignment specifier] If declarations of an object in different translation units have different alignment specifiers, the behavior is this.|undefined
[6.7.6 Declarators] This is a declarator that is not part of another declarator.|full declarator|full
[6.7.6 Declarators] If, in the nested sequence of declarators in a full declarator, there is a declarator specifying a variable length array type, the type specified by the full declarator is said to be this.|variably modified
[6.7.6.1 Pointer declarators] For two pointer types to be this, both shall be identically qualified and both shall be pointers to compatible types.|compatible
[6.7.6.2 Array declarators] The element type of an array shall not be this type.|function type|function
[6.7.6.2 Array declarators] If an identifier is declared to be an object with static or thread storage duration, it shall not have this kind of type.|variable length array|VLA{VLA stands for variable length array.}
[6.7.6.2 Array declarators] When several ``array of'' specifications are adjacent, this kind of array is declared.|multidimensional
[6.7.6.2 Array declarators] If the size is not present, the array type is this kind of type.|incomplete type|incomplete
[6.7.6.2 Array declarators] If the size is this instead of being an expression, the array type is a variable length array type of unspecified size, which can only be used in declarations or type names with function prototype scope; such arrays are nonetheless complete types.|*
[6.7.6.2 Array declarators] If the size of an array is not an integer constant expression and the element type does not have a known constant size, but is not incomplete, the array type is this kind of type.|variable length array|VLA{VLA stands for variable length array.}
[6.7.6.2 Array declarators] For two array types to be this, both shall have compatible element types, and if both size specifiers are present, and are integer constant expressions, then both size specifiers shall have the same constant value.|compatible
[6.7.6.2 Array declarators] If the two array types are used in a context which requires them to be compatible, it is undefined behavior if the two size specifiers evaluate to compare as this.|unequal|not equal
[6.7.6.3 Function declarators (including prototypes)] A function declarator shall not specify a return type that is this kind of type.|function type{Also, array type.}|array type{Also, function type.}|function{Also, array type.}|array{Also, function type.}
[6.7.6.3 Function declarators (including prototypes)] The only storage-class specifier that shall occur in a parameter declaration is this.|register
[6.7.6.3 Function declarators (including prototypes)] An identifier list in a function declarator that is not part of a definition of that function shall be this.|empty
[6.7.6.3 Function declarators (including prototypes)] This specifies the types of, and may declare identifiers for, the parameters of the function.|parameter type list{Also known as a prototype.}|prototype{Also known as a parameter type list.}
[6.7.6.3 Function declarators (including prototypes)] A declaration of a parameter as ``array of type'' shall be adjusted to ``qualified pointer to type'', where the type qualifiers (if any) are those specified within these of the array type derivation.|square brackets|brackets|[]
[6.7.6.3 Function declarators (including prototypes)] If this keyword appears within the [ and ] of the array type derivation, then for each call to the function, the value of the corresponding actual argument shall provide access to the first element of an array with at least as many elements as specified by the size expression.|static
[6.7.6.3 Function declarators (including prototypes)] A declaration of a parameter as ``function returning type'' shall be adjusted to this type.|pointer to function returning type|pointer to function|function pointer
[6.7.6.3 Function declarators (including prototypes)] If the parameter type list terminates with this, no information about the number or types of the parameters after the comma is supplied.|ellipsis{These parameters are known as variable arguments.}|...{These parameters are known as variable arguments.}
[6.7.6.3 Function declarators (including prototypes)] The macros defined in the <stdarg.h> header may be used to access arguments that correspond to this in a parameter type list.|ellipsis|...
[6.7.6.3 Function declarators (including prototypes)] The macros defined in this header may be used to access arguments that correspond to the ellipsis in a parameter type list.|stdarg.h
[6.7.6.3 Function declarators (including prototypes)] If, in a parameter declaration, an identifier can be treated either as a typedef name or as a parameter name, it shall be taken as this.|typedef|typedef name
[6.7.6.3 Function declarators (including prototypes)] If the function declarator is not part of a definition of that function, parameters may have incomplete type and may use this notation in their sequences of declarator specifiers to specify variable length array types.|[*]
[6.7.6.3 Function declarators (including prototypes)] This declares only the identifiers of the parameters of the function.|identifier list
[6.7.6.3 Function declarators (including prototypes)] An empty list in a function declarator that is part of a definition of that function specifies that the function has none of these.|parameters
[6.7.6.3 Function declarators (including prototypes)] For two function types to be this, both shall specify compatible return types. Moreover, the parameter type lists, if both are present, shall agree in the number of parameters and in use of the ellipsis terminator; corresponding parameters shall have compatible types.|compatible
[6.7.6.3 Function declarators (including prototypes)] For two of these types to be compatible, both shall specify compatible return types. Moreover, the parameter type lists, if both are present, shall agree in the number of parameters and in use of the ellipsis terminator; corresponding parameters shall have compatible types.|function
[6.7.6.3 Function declarators (including prototypes)] If one function type has this and the other type is specified by a function definition that contains a (possibly empty) identifier list, both shall agree in the number of parameters.|parameter type list{Also known as a prototype.}|prototype{Also known as a parameter type list.}
[6.7.6.3 Function declarators (including prototypes)] When determining the compatability of two function types, if both function types are this, parameter types are not compared.|old style{Also known as K&R style.}|K&R style{Also known as old style.}
[6.7.8 Type definitions] If a typedef name specifies a variably modified type then it shall have this scope.|block
[6.7.9 Initialization] No initializer shall attempt to provide this for an object not contained within the entity being initialized.|value
[6.7.9 Initialization] All the expressions in an initializer for an object that has static or thread storage duration shall be these.|constant expressions{It could also be a string literal.}|string literals{It could also be a constant expression.}
[6.7.9 Initialization] If the declaration of an identifier has this scope, and the identifier has external or internal linkage, the declaration shall have no initializer for the identifier.|block
[6.7.9 Initialization] If a designated initializer has the form [ constant-expression ] then the current object shall have this kind of type.|array
[6.7.9 Initialization] If a designated initializer has the form . identifer then the current object shall have this kind of type.|structure{It could also have union type.}|struct{It could also have union type.}|union{It could also have structure type.}
[6.7.9 Initialization] If an object that has automatic storage duration is not initialized explicitly, its value is this.|indeterminate
[6.7.9 Initialization] If an object that has this storage duration is not initialized explicitly, then: if it has pointer type, it is initialized to a null pointer; if it has arithmetic type, it is initialized to zero; if it is an aggregate, every member is initialized according to the aforementioned rules; if it is a union, the first named member is initialized according to the aforementioned rules.|static{Thread storage duration is also applicable.}|thread{Static storage duration is also applicable.}
[6.7.9 Initialization] The initializer for a scalar shall be a single expression, optionally enclosed in these.|braces
[6.7.9 Initialization] When none of these are present, subobjects are initialized in order according to the type of the current object: array elements in increasing subscript order, structure members in declaration order, and the first named member of a union.|designations
[6.7.9 Initialization] The initialization shall occur in this order, each initializer provided for a particular subobject overriding any previously listed initializer for the same subobject.|initializer list order|initializer list
[6.7.9 Initialization] The initialization shall occur in initializer list order, each initializer provided for a particular subobject overriding any previously listed initializer for the same subobject; all subobjects that are not initialized explicitly shall be initialized implicitly the same as objects that have this storage duration.|static
[6.7.9 Initialization] If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have this storage duration.|static
[6.7.9 Initialization] If an array of unknown size is initialized, its size is determined by the largest indexed element with this.|explicit initializer|initializer
[6.7.10 Static assertions] If the value of the constant expression of a static assertion compares as this to 0, the declaration has no effect.|unequal|not equal
[6.8 Statements and blocks] This specifies an action to be performed.|statement
[6.8 Statements and blocks] This allows a set of declarations and statements to be grouped into one syntactic unit.|block
[6.8 Statements and blocks] This is an expression that is not part of another expression or of a declarator.|full expression|full
[6.8.1 Labeled statements] A case or default label shall appear only in this statement.|switch
[6.8.1 Labeled statements] Label names shall be unique within this.|function
[6.8.2 Compound statement] A block is also known as this.|compound statement
[6.8.2 Compound statement] A compound statement is also known as this.|block
[6.8.3 Expression and null statements] The expression in an expression statement is evaluated as this kind of expression for its side effect.|void expression|void
[6.8.3 Expression and null statements] The expression in an expression statement is evaluated as a void expression for this.|side effect
[6.8.3 Expression and null statements] A statement consisting of just a semicolon performs no operations; it is known as this.|null statement
[6.8.3 Expression and null statements] If a function call is evaluated as an expression statement for only this, the discarding of its value may be made explicit by converting the expression to a void expression by means of a cast.|side effect
[6.8.3 Expression and null statements] If a function call is evaluated as an expression statement for its side effects only, the discarding of its value may be made explicit by converting the expression to this kind of expression by means of a cast.|void expression|void
[6.8.4 Selection statements] This kind of statement selects among a set of statements depending on the value of a controlling expression (e.g., if and switch).|selection statement|selection
[6.8.4.1 The if statement] The controlling expression of an if statement shall have this type.|scalar
[6.8.4.1 The if statement] If the first substatement of an if statement is reached via this, the second substatement is not executed.|label
[6.8.4.2 The switch statement] The controlling expression of a switch statement shall have this type.|integer
[6.8.4.2 The switch statement] The expression of each case label shall be this kind of expression and no two of the case constant expressions in the same switch statement shall have the same value after conversion.|integer constant expression{Sometimes referred to as ICE.}|integer constant|ICE{ICE stands for integer constant expression.}
[6.8.4.2 The switch statement] This statement causes control to jump to, into, or past the statement that is its body, depending on the value of a controlling expression, and on the presence of a default label and the values of any case labels on or in its body.|switch
[6.8.4.2 The switch statement] If a value matches that of the promoted controlling expression of a switch statement, control jumps to the statement following the matched this.|case label|case
[6.8.4.2 The switch statement] If no case constant expression matches its controlling expression and there is no default label, then this part of the switch body is executed.|none
[6.8.5 Iteration statements] A statement that causes a statement, called the loop body, to be executed repeatedly until the controlling expression compares equal to 0 is called this (e.g., for and while).|iteration statement|iteration
[6.8.5 Iteration statements] The controlling expression of an iteration statement shall have this type.|scalar
[6.8.5 Iteration statements] An omitted optional controlling expression for an iteration statement is replaced by this.|nonzero constant
[6.8.6.1 The goto statement] The identifier in a goto statement shall refer to this located somewhere in the enclosing function.|label
[6.8.6.1 The goto statement] A goto statement shall not jump from outside the scope of an identifier having this kind of type to inside the scope of that identifier.|variably modified
[6.8.6.1 The goto statement] A goto statement is not allowed to jump past any declarations of objects with this kind of type. A jump within the scope, however, is permitted.|variably modified
[6.8.6.2 The continue statement] This statement shall appear only in or as a loop body.|continue
[6.8.6.2 The continue statement] A continue statement shall appear only in or as this kind of body.|loop
[6.8.6.2 The continue statement] This statement causes a jump to the loop-continuation portion of the smallest enclosing iteration statement; that is, to the end of the loop body.|continue
[6.8.6.3 The break statement] This statement shall appear only in or as a switch body or loop body.|break
[6.8.6.4 The return statement] A return statement with an expression shall only appear in a function whose return type is this.|not void
[6.8.6.4 The return statement] A return statement without an expression shall only appear in a function whose return type is this.|void
[6.8.6.4 The return statement] If the expression of the return statement has a type different from the return type of the function in which it appears, the value is converted as if by this to an object having the return type of the function.|assignment
[6.9 External definitions] There shall be no more than this many external definitions for each identifier declared with internal linkage in a translation unit.|one|1
[6.9 External definitions] This is an external declaration that is also a definition of a function (other than an inline definition) or an object.|external definition
[6.9.1 Function definitions] If the declarator of a function includes this, the declaration of each parameter shall include an identifier, except for the special case of a parameter list consisting of a single parameter of type void, in which case there shall not be an identifier.|parameter type list{Also known as a prototype.}|prototype{Also known as a parameter type list.}
[6.9.1 Function definitions] If the declarator of a function includes a parameter type list, the declaration of each parameter shall include an identifier, except for the special case of a parameter list consisting of this single parameter, in which case there shall not be an identifier.|void
[6.9.1 Function definitions] If the declarator of a function includes a parameter type list, the list also specifies the types of all the parameters; such a declarator also serves as this for later calls to the same function in the same translation unit.|function prototype|prototype
[6.9.1 Function definitions] If a function declarator includes this, the types of the parameters shall be declared in a following declaration list.|identifier list{Such a function declaration is also known as K&R style or old style.}
[6.9.1 Function definitions] If a function that accepts a variable number of arguments is defined without a parameter type list that ends with this, the behavior is undefined.|ellipsis|...
[6.9.1 Function definitions] If the } that terminates a function is reached, and the value of the function call is used by the caller, the behavior is this.|undefined
[6.9.2 External object definitions] If the declaration of an identifier for an object has this scope and an initializer, the declaration is an external definition for the identifier.|file
[6.9.2 External object definitions] If at the end of the translation unit containing int i[]; at file scope, the array i still has incomplete type, the implicit initializer causes it to have one element, which is set to this on program startup.|zero|0
[6.10 Preprocessing directives] A sequence of preprocessing tokens whose first token in the sequence is a # preprocessing token that is either the first character in the source file (optionally after white space containing no new-line characters) or that follows white space containing at least one new-line character is called this.|preprocessing directive
[6.10 Preprocessing directives] This character ends the preprocessing directive even if it occurs within what would otherwise be an invocation of a function-like macro.|new-line|newline|\n
[6.10 Preprocessing directives] The only white-space characters that shall appear between preprocessing tokens within a preprocessing directive (from just after the introducing # preprocessing token through just before the terminating new-line character) are these (name both, separated by "and").|space and horizontal-tab|horizontal-tab and space
[6.10 Preprocessing directives] The implementation can process and skip sections of source files conditionally, include other source files, and replace macros. These capabilities are called this, because conceptually they occur before translation of the resulting translation unit.|preprocessing
[6.10.1 Conditional inclusion] Prior to evaluation, macro invocations in the list of preprocessing tokens that will become the controlling constant expression has this happen to them, except for those macro names modified by the defined unary operator), just as in normal text.|replaced
[6.10.1 Conditional inclusion] If a conditional inclusion's condition evaluates to false (zero), the group that it controls has this happen to it.|skipped|ignored
[6.10.1 Conditional inclusion] If none of the conditions of a conditional inclusion evaluates to true, and there is this preprocessing directive, the group controlled by that directive is processed.|#else
[6.10.1 Conditional inclusion] As indicated by the syntax, a preprocessing token shall not follow a #else or #endif directive before this character which terminates the directive.|new-line|newline|\n
[6.10.2 Source file inclusion] This preprocessing directive shall identify a header or source file that can be processed by the implementation.|#include
[6.10.2 Source file inclusion] The method by which a sequence of preprocessing tokens between a < and a > preprocessing token pair or a pair of " characters is combined into a single header name preprocessing token is this kind of behavior.|implementation-defined
[6.10.3 Macro replacement] An identifier currently defined as this kind of macro shall not be redefined by another #define preprocessing directive unless the second definition is also this kind of macro definition and the two replacement lists are identical.|object-like macro|object-like
[6.10.3 Macro replacement] Likewise, an identifier currently defined as this kind of macro shall not be redefined by another #define preprocessing directive unless the second definition is also this kind of macro definition that has the same number and spelling of parameters, and the two replacement lists are identical.|function-like macro|function-like
[6.10.3 Macro replacement] This shall be between the identifier and the replacement list in the definition of an object-like macro.|white-space|whitespace
[6.10.3 Macro replacement] If the identifier-list in a macro definition does not end with this, the number of arguments in an invocation of a function-like macro shall equal the number of parameters in the macro definition. Otherwise, there shall be more arguments in the invocation than there are parameters in the macro definition.|ellipsis|...
[6.10.3 Macro replacement] This identifier shall occur only in the replacement-list of a function-like macro that uses the ellipsis notation in the parameters.|__VA_ARGS__
[6.10.3 Macro replacement] The identifier __VA_ARGS__ shall occur only in the replacement-list of a function-like macro that uses this notation in the parameters.|ellipsis|...
[6.10.3 Macro replacement] A parameter identifier in this kind of macro shall be uniquely declared within its scope.|function-like macro|function-like
[6.10.3 Macro replacement] The identifier immediately following the #define directive is called this.|macro|macro name
[6.10.3 Macro replacement] If a # preprocessing token, followed by an identifier, occurs lexically at the point at which a preprocessing directive could begin, the identifier is not subject to this.|macro replacement|replacement
[6.10.3 Macro replacement] A preprocessing directive of the form `# define identifier replacement-list new-line` defines this kind of macro that causes each subsequent instance of the macro name to be replaced by the replacement list of preprocessing tokens that constitute the remainder of the directive.|object-like macro|object-like
[6.10.3 Macro replacement] A preprocessing directive of the form `# define identifier lparen identifier-listopt ) replacement-list new-line` defines this kind of macro with parameters, who use is similar syntactically to a function call.|function-like macro|function-like
[6.10.3 Macro replacement] If this is in the identifier-list in a macro definition, then the trailing arguments, including any separating comma preprocessing tokens, are merged to form a single item: the variable arguments.|...|ellipsis
[6.10.3 Macro replacement] If there is a ... in the identifier-list in a macro definition, then the trailing arguments, including any separating comma preprocessing tokens, are merged to form a single item called this.|variable arguments
[6.10.3.1 Argument substitution] If this identifier occurs in the macro replacement list it shall be treated as if it were a parameter, and the variable arguments shall form the preprocessing tokens used to replace it.|__VA_ARGS__
[6.10.3.2 The # operator] If the replacement that results from a # stringification is not a valid this, the behavior is undefined.|character string literal|string literal
[6.10.3.3 The ## operator] If, in the replacement list of a function-like macro, an argument consists of no preprocessing tokens, the parameter is replaced by this preprocessing token.|placemarker{Placemarker preprocessing tokens do not appear in the syntax because they are temporary entities that exist only within translation phase 4.}
[6.10.3.3 The ## operator] These preprocessing tokens do not appear in the syntax because they are temporary entities that exist only within translation phase 4.|placemarker
[6.10.3.3 The ## operator] Placemarker preprocessing tokens do not appear in the syntax because they are temporary entities that exist only within this translation phase.|4|four
[6.10.3.5 Scope of macro definitions] A macro definition lasts (independent of block structure) until this preprocessing directive that corresponds to it is encountered or (if none is encountered) until the end of the preprocessing translation unit.|#undef
[6.10.3.5 Scope of macro definitions] A macro definition lasts (independent of block structure) until a corresponding #undef directive is encountered or (if none is encountered) until the end of this.|preprocessing translation unit
[6.10.4 Line control] The string literal of a #line directive, if present, shall be this kind of string literal.|character string literal|character
[6.10.4 Line control] The digit sequence of a #line directive shall not specify zero, nor a number greater than this.|2147483647
[6.10.6 Pragma directive] An implementation is not required to perform this in pragmas, but it is permitted except for in standard pragmas (where STDC immediately follows pragma).|macro replacement|replacement
[6.10.6 Pragma directive] If this preprocessing token does immediately follow pragma in the directive (prior to any macro replacement), then no macro replacement is performed on the directive.|STDC
[6.10.8 Predefined macro names] None of these macro names, nor the identifier defined, shall be the subject of a #define or a #undef preprocessing directive.|predefined macro names|predefined macros|predefined
[6.10.8 Predefined macro names] Any predefined macro names shall begin with this character followed by an uppercase letter or a second such character.|underscore|_
[6.10.8 Predefined macro names] The implementation shall not predefine this macro, nor shall it define it in any standard header.|__cplusplus
[6.10.8.1 Mandatory macros] This predefined macro is the date of translation of the preprocessing translation unit.|__DATE__{If the date of translation is not available, an implementation-defined valid date shall be supplied.}
[6.10.8.1 Mandatory macros] This predefined macro is the presumed name of the current source file (a character string literal).|__FILE__
[6.10.8.1 Mandatory macros] This predefined macro is the presumed line number (within the current source file) of the current source line (an integer constant).|__LINE__
[6.10.8.1 Mandatory macros] This predefined macro is the integer constant 1, intended to indicate a conforming implementation.|__STDC__
[6.10.8.1 Mandatory macros] This predefined macro is the integer constant 1 if the implementation is a hosted implementation or the integer constant 0 if it is not.|__STDC_HOSTED__
[6.10.8.1 Mandatory macros] This predefined macro is an integer constant of type long that is increased with each revision of this International Standard.|__STDC_VERSION__
[6.10.8.1 Mandatory macros] This predefined macro is the time of translation of the preprocessing translation unit.|__TIME__{If the time of translation is not available, an implementation-defined valid time shall be supplied.}
[6.10.8.2 Environment macros] If this predefined macro is defined, then every character in the Unicode required set, when stored in an object of type wchar_t, has the same value as the short identifier of that character.|__STDC_ISO_10646__
[6.10.8.2 Environment macros] This conditionally predefined macro is the integer constant 1 if, in the encoding for wchar_t, a member of the basic character set need not have a code value equal to its value when used as the lone character in an integer character constant.|__STDC_MB_MIGHT_NEQ_WC__
[6.10.8.2 Environment macros] This conditionally predefined macro is the integer constant 1, intended to indicate that values of type char16_t are UTF-16 encoded. If some other encoding is used, the macro shall not be defined and the actual encoding used is implementation-defined.|__STDC_UTF_16__
[6.10.8.2 Environment macros] This conditionally predefined macro is the integer constant 1, intended to indicate that values of type char32_t are UTF-32 encoded. If some other encoding is used, the macro shall not be defined and the actual encoding used is implementation-defined.|__STDC_UTF_32__
[6.10.8.3 Conditional feature macros] This conditionally predefined macro is the integer constant 1, intended to indicate conformance to the specifications in annex L (Analyzability).|__STDC_ANALYZABLE__
[6.10.8.3 Conditional feature macros] This conditionally predefined macro is the integer constant 1, intended to indicate conformance to the specifications in annex F (IEC 60559 floating-point arithmetic).|__STDC_IEC_559__
[6.10.8.3 Conditional feature macros] This conditionally predefined macro is the integer constant 1, intended to indicate adherence to the specifications in annex G (IEC 60559 compatible complex arithmetic).|__STDC_IEC_559_COMPLEX__
[6.10.8.3 Conditional feature macros] This conditionally predefined macro is the integer constant 201ymmL, intended to indicate support for the extensions defined in annex K (Bounds-checking interfaces).|__STDC_LIB_EXT1__
[6.10.8.3 Conditional feature macros] This conditionally predefined macro is the integer constant 1, intended to indicate that the implementation does not support atomic types (including the _Atomic type qualifier) and the <stdatomic.h> header.|__STDC_NO_ATOMICS__
[6.10.8.3 Conditional feature macros] This conditionally predefined macro is the integer constant 1, intended to indicate that the implementation does not support complex types or the <complex.h> header.|__STDC_NO_COMPLEX__
[6.10.8.3 Conditional feature macros] This conditionally predefined macro is the integer constant 1, intended to indicate that the implementation does not support the <threads.h> header.|__STDC_NO_THREADS__
[6.10.8.3 Conditional feature macros] This conditionally predefined macro is the integer constant 1, intended to indicate that the implementation does not support variable length arrays or variably modified types.|__STDC_NO_VLA__
[7.1.1 Definitions of terms] A contiguous sequence of characters terminated by and including the first null character is called this.|string
[7.1.1 Definitions of terms] A wide character with code value zero is called this.|null wide character
[7.1.1 Definitions of terms] A contiguous sequence of wide characters terminated by and including the first null wide character is called this.|wide string
[7.1.1 Definitions of terms] A contiguous sequence of bytes within a multibyte string that (potentially) causes a change in shift state is called this.|shift sequence
[7.1.2 Standard headers] If a file with the same name as one of the above < and > delimited sequences, not provided as part of the implementation, is placed in any of the standard places that are searched for included source files, the behavior is this.|undefined
[7.1.2 Standard headers] The program shall not have any macros with names lexically identical to these currently defined prior to the inclusion of the header or when any macro defined in the header is expanded.|keywords
[7.1.2 Standard headers] Any definition of an object-like macro in a standard header shall expand to code that is fully protected by these where necessary, so that it groups in an arbitrary expression as if it were a single identifier.|parentheses
[7.1.2 Standard headers] Any declaration of a library function shall have this linkage.|external
[7.1.3 Reserved identifiers] All identifiers that begin with an underscore and either this or another underscore are always reserved for any use.|uppercase letter
[7.1.4 Use of library functions] Implementations may share their own internal objects between threads if the objects are not visible to users and are protected against this.|data race|race condition|race hazard
[7.2 Diagnostics <assert.h>] If this macro is defined as a macro name at the point in the source file where <assert.h> is included, the assert macro is defined simply as #define assert(ignore) ((void)0).|NDEBUG
[7.2.1.1 The assert macro] When it is executed, if expression is false, the assert macro writes information about the particular call that failed on this stream in an implementation-defined format.|standard error|error|stderr
[7.2.1.1 The assert macro] When it is executed, if expression is false, the assert macro writes information about the particular call that failed. It then calls this function.|abort
[7.3.2 Conventions] Values of complex arithmetic are not interpreted as degrees, but as this.|radians|radian
[7.3.5.1 The cacos functions] This function computes the complex arc cosine of z, with branch cuts outside the interval [-1, +1] along the real axis and return the complex arc cosine value, in the range of a strip mathematically unbounded along the imaginary axis and in the interval [0, pi] along the real axis.|cacos
[7.3.5.2 The casin functions] This function computes the complex arc sine of z, with branch cuts outside the interval [-1, +1] along the real axis and return the complex arc sine value, in the range of a strip mathematically unbounded along the imaginary axis and in the interval [-pi/2, +pi/2] along the real axis.|casin
[7.3.5.3 The catan functions] This function computes the complex arc tangent of z, with branch cuts outside the interval [-i, +i] along the imaginary axis and return the complex arc tangent value, in the range of a strip mathematically unbounded along the imaginary axis and in the interval [-pi/2, +pi/2] along the real axis.|catan
[7.3.5.4 The ccos functions] This function computes the complex cosine of z.|ccos
[7.3.5.5 The csin functions] This function computes the complex sine of z.|csin
[7.3.5.6 The ctan functions] This function computes the complex tangent of z.|ctan
[7.3.6.1 The cacosh functions] This function computes the complex arc hyperbolic cosine of z, with a branch cut at values less than 1 along the real axis and return the complex arc hyperbolic cosine value, in the range of a half-strip of nonnegative values along the real axis and in the interval [-ipi, +ipi] along the imaginary axis.|cacosh
[7.3.6.2 The casinh functions] This function computes the complex arc hyperbolic sine of z, with branch cuts outside the interval [-i, +i] along the imaginary axis and return the complex arc hyperbolic sine value, in the range of a strip mathematically unbounded along the real axis and in the interval [-ipi/2, +ipi/2] along the imaginary axis.|casinh
[7.3.6.3 The catanh functions] This function computes the complex arc hyperbolic tangent of z, with branch cuts outside the interval [-1, +1] along the real axis and return the complex arc hyperbolic tangent value, in the range of a strip mathematically unbounded along the real axis and in the interval [-ipi/2, +ipi/2] along the imaginary axis.|catanh
[7.3.6.4 The ccosh functions] This function computes the complex hyperbolic cosine of z.|ccosh
[7.3.6.5 The csinh functions] This function computes the complex hyperbolic sine of z.|csinh
[7.3.6.6 The ctanh functions] This function computes the complex hyperbolic tangent of z.|ctanh
[7.3.7.1 The cexp functions] This function computes the complex base-e exponential of z.|cexp
[7.3.7.2 The clog functions] This function computes the complex natural (base-e) logarithm of z, with a branch cut along the negative real axis and return the complex natural logarithm value, in the range of a strip mathematically unbounded along the real axis and in the interval [-ipi, +ipi] along the imaginary axis.|clog
[7.3.8.1 The cabs functions] This function computes the complex absolute value (also called norm, modulus, or magnitude) of z.|cabs
[7.3.8.2 The cpow functions] This function computes the complex power function xy, with a branch cut for the first parameter along the negative real axis.|cpow
[7.3.8.3 The csqrt functions] This function computes the complex square root of z, with a branch cut along the negative real axis and return the complex square root value, in the range of the right half-plane (including the imaginary axis).|csqrt
[7.3.9.1 The carg functions] This function computes the argument (also called phase angle) of z, with a branch cut along the negative real axis and return the value of the argument in the interval [-pi, +pi].|carg
[7.3.9.2 The cimag functions] This function computes the imaginary part of z.|cimag
[7.3.9.4 The conj functions] This function computes the complex conjugate of z, by reversing the sign of its imaginary part.|conj
[7.3.9.5 The cproj functions] This function computes a projection of z onto the Riemann sphere: z projects to z except that all complex infinities (even those with one infinite part and one NaN part) project to positive infinity on the real axis.|cproj
[7.3.9.6 The creal functions] This function computes the real part of z.|creal
[7.4 Character handling <ctype.h>] This header declares several functions useful for classifying and mapping characters.|ctype.h
[7.4.1.1 The isalnum function] This function tests for any character for which isalpha or isdigit is true.|isalnum
[7.4.1.2 The isalpha function] This function tests for any character for which isupper or islower is true, or any character that is one of a locale-specific set of alphabetic characters for which none of iscntrl, isdigit, ispunct, or isspace is true.|isalpha
[7.4.1.3 The isblank function] This function tests for any character that is a standard blank character or is one of a locale-specific set of characters for which isspace is true and that is used to separate words within a line of text.|isblank
[7.4.1.4 The iscntrl function] This function tests for any control character.|iscntrl
[7.4.1.5 The isdigit function] This function tests for any decimal-digit character.|isdigit
[7.4.1.6 The isgraph function] This function tests for any printing character except space (' ').|isgraph
[7.4.1.7 The islower function] This function tests for any character that is a lowercase letter or is one of a locale-specific set of characters for which none of iscntrl, isdigit, ispunct, or isspace is true.|islower
[7.4.1.8 The isprint function] This function tests for any printing character including space (' ').|isprint
[7.4.1.9 The ispunct function] This function tests for any printing character that is one of a locale-specific set of punctuation characters for which neither isspace nor isalnum is true.|ispunct
[7.4.1.10 The isspace function] This function tests for any character that is a standard white-space character or is one of a locale-specific set of characters for which isalnum is false.|isspace
[7.4.1.11 The isupper function] This function tests for any character that is an uppercase letter or is one of a locale-specific set of characters for which none of iscntrl, isdigit, ispunct, or isspace is true.|isupper
[7.4.1.12 The isxdigit function] This function tests for any hexadecimal-digit character.|isxdigit
[7.4.2.1 The tolower function] This function converts an uppercase letter to a corresponding lowercase letter.|tolower
[7.4.2.2 The toupper function] This function converts a lowercase letter to a corresponding uppercase letter.|toupper
[7.6 Floating-point environment <fenv.h>] The floating-point environment provides a system variable whose value is set (but never cleared) when a floating-point exception is raised, which occurs as a side effect of exceptional floating-point arithmetic to provide auxiliary information. It is called this.|floating-point status flag|status flag
[7.6 Floating-point environment <fenv.h>] The floating-point environment provides a system variable whose value may be set by the user to affect the subsequent behavior of floating-point arithmetic. A floating-point status flag is not an object and can be set more than once within an expression. It is called this.|floating-point control mode|control mode
[7.6.1 The FENV_ACCESS pragma] This pragma provides a means to inform the implementation when a program might access the floating-point environment to test floating-point status flags or run under non-default floating-point control modes.|FENV_ACCESS
[7.6.2.1 The feclearexcept function] This function attempts to clear the supported floating-point exceptions represented by its argument.|feclearexcept
[7.6.2.2 The fegetexceptflag function] This function attempts to store an implementation-defined representation of the states of the floating-point status flags indicated by the argument excepts in the object pointed to by the argument flagp.|fegetexceptflag
[7.6.2.3 The feraiseexcept function] This function attempts to raise the supported floating-point exceptions represented by its argument.|feraiseexcept
[7.6.2.4 The fesetexceptflag function] This function attempts to set the floating-point status flags indicated by the argument excepts to the states stored in the object pointed to by flagp.|fesetexceptflag
[7.6.2.5 The fetestexcept function] This function determines which of a specified subset of the floating-point exception flags are currently set.|fetestexcept
[7.6.3.1 The fegetround function] This function gets the current rounding direction.|fegetround
[7.6.3.1 The fegetround function] The fegetround function returns the value of the rounding direction macro representing the current rounding direction or this value if there is no such rounding direction macro or the current rounding direction is not determinable.|negative
[7.6.3.2 The fesetround function] This function establishes the rounding direction represented by its argument round.|fesetround
[7.6.4.1 The fegetenv function] This function attempts to store the current floating-point environment in the object pointed to by envp.|fegetenv
[7.6.4.2 The feholdexcept function] This function saves the current floating-point environment in the object pointed to by envp, clears the floating-point status flags, and then installs a non-stop (continue on floating-point exceptions) mode, if available, for all floating-point exceptions.|feholdexcept
[7.6.4.3 The fesetenv function] This function attempts to establish the floating-point environment represented by the object pointed to by envp.|fesetenv
[7.6.4.4 The feupdateenv function] This function attempts to save the currently raised floating-point exceptions in its automatic storage, install the floating-point environment represented by the object pointed to by envp, and then raise the saved floating-point exceptions.|feupdateenv
[7.8 Format conversion of integer types <inttypes.h>] This header includes the header <stdint.h> and extends it with additional facilities provided by the hosted implementation.|inttypes.h
[7.8 Format conversion of integer types <inttypes.h>] The header <inttypes.h> includes this header and extends it with additional facilities provided by the hosted implementation.|stdint.h
[7.8.2.1 The imaxabs function] This function computes the absolute value of an integer.|imaxabs
[7.8.2.2 The imaxdiv function] This function computes numer / denom and numer % denom in a single operation.|imaxdiv
[7.8.2.2 The imaxdiv function] This function returns a structure of type imaxdiv_t comprising both the quotient and the remainder.|imaxdiv
[7.8.2.2 The imaxdiv function] This structure shall contain (in either order) the members quot (the quotient) and rem (the remainder), each of which has type intmax_t.|imaxdiv_t
[7.11.1.1 The setlocale function] This function may be used to change or query the program's entire current locale or portions thereof.|setlocale
[7.11.1.1 The setlocale function] This value for the locale argument causes the setlocale function to return a pointer to the string associated with the category for the program's current locale; the program's locale is not changed.|null pointer|NULL|0
[7.11.1.1 The setlocale function] The implementation shall arrange to encode in a string the various categories due to a heterogeneous locale when the category argument to the setlocale function has this value.|LC_ALL
[7.11.2.1 The localeconv function] This function sets the components of an object with type struct lconv with values appropriate for the formatting of numeric quantities (monetary and otherwise) according to the rules of the current locale.|localeconv
[7.12 Mathematics <math.h>] If FLT_EVAL_METHOD is set to this, float_t and double_t are float and double, respectively.|0
[7.12 Mathematics <math.h>] If FLT_EVAL_METHOD is set to this, float_t and double_t are both double.|1
[7.12 Mathematics <math.h>] If FLT_EVAL_METHOD is set to this, float_t and double_t are both long double.|2
[7.12 Mathematics <math.h>] If this macro is defined, it indicates that the fma function generally executes about as fast as, or faster than, a multiply and an add of double operands.|FP_FAST_FMA
[7.12 Mathematics <math.h>] If the expression math_errhandling & MATH_ERREXCEPT can be nonzero, the implementation shall define the macros FE_DIVBYZERO, FE_INVALID, and FE_OVERFLOW in this header.|fenv.h
[7.12.1 Treatment of error conditions] This error occurs if an input argument is outside the domain over which the mathematical function is defined.|domain
[7.12.1 Treatment of error conditions] This error (also known as a singularity or infinitary) occurs if the mathematical function has an exact infinite result as the finite input argument(s) are approached in the limit (for example, log(0.0)).|pole
[7.12.1 Treatment of error conditions] This error occurs if the mathematical result of the function cannot be represented in an object of the specified type, due to extreme magnitude.|range
[7.12.1 Treatment of error conditions] A floating result does this if the magnitude of the mathematical result is finite but so large that the mathematical result cannot be represented without extraordinary roundoff error in an object of the specified type.|overflows|overflow
[7.12.1 Treatment of error conditions] If a floating result does this and default rounding is in effect, then the function returns the value of the macro HUGE_VAL, HUGE_VALF, or HUGE_VALL according to the return type, with the same sign as the correct value of the function.|overflows|overflow
[7.12.1 Treatment of error conditions] If a floating result overflows and if the integer expression math_errhandling & MATH_ERRNO is nonzero, the integer expression errno acquires this value.|ERANGE
[7.12.1 Treatment of error conditions] If a floating result overflows and if the integer expression math_errhandling & MATH_ERREXCEPT is nonzero, this floating-point exception is raised.|overflow
[7.12.1 Treatment of error conditions] If a domain, pole, or range error occurs and the integer expression math_errhandling & MATH_ERRNO is this value, then errno shall either be set to the value corresponding to the error or left unmodified.|zero|0
[7.12.4.1 The acos functions] This function computes the principal value of the arc cosine of x and return arc cosine x in the interval [0,pi] radians.|acos
[7.12.4.2 The asin functions] This function computes the principal value of the arc sine of x and return arc sine x in the interval [-pi/2, +pi/2] radians.|asin
[7.12.4.3 The atan functions] This function computes the principal value of the arc tangent of x and return arc tangent x in the interval [-pi/2, +pi/2] radians.|atan
[7.12.4.4 The atan2 functions] This function computes the value of the arc tangent of y/x, using the signs of both arguments to determine the quadrant of the return value and return arc tangent y/x in the interval [-pi, +pi] radians.|atan2
[7.12.4.5 The cos functions] This function computes the cosine of x (measured in radians).|cos
[7.12.4.6 The sin functions] This function computes the sine of x (measured in radians).|sin
[7.12.4.7 The tan functions] This function returns the tangent of x (measured in radians).|tan
[7.12.5.1 The acosh functions] This function computes the (nonnegative) arc hyperbolic cosine of x and return a value in the interval [0, +pi].|acosh
[7.12.5.2 The asinh functions] This function computes the arc hyperbolic sine of x.|asinh
[7.12.5.3 The atanh functions] This function computes the arc hyperbolic tangent of x.|atanh
[7.12.5.4 The cosh functions] This function computes the hyperbolic cosine of x.|cosh
[7.12.5.5 The sinh functions] This function computes the hyperbolic sine of x.|sinh
[7.12.5.6 The tanh functions] This function computes the hyperbolic tangent of x.|tanh
[7.12.6.1 The exp functions] This function computes the base-e exponential of x.|exp
[7.12.6.2 The exp2 functions] This function computes the base-2 exponential of x.|exp2
[7.12.6.3 The expm1 functions] This function computes the base-e exponential of the argument, minus 1.|expm1
[7.12.6.4 The frexp functions] This function breaks a floating-point number into a normalized fraction and an integral power of 2.|frexp
[7.12.6.5 The ilogb functions] This function extracts the exponent of x as a signed int value.|ilogb
[7.12.6.5 The ilogb functions] If the argument of the ilogb functions is zero they compute this value.|FP_ILOGB0
[7.12.6.5 The ilogb functions] If the argument of the ilogb functions is infinite they compute this value.|INT_MAX
[7.12.6.5 The ilogb functions] If the argument of the ilogb functions is a NaN they compute this value.|FP_ILOGBNAN
[7.12.6.5 The ilogb functions] This function returns the exponent of x as a signed int value.|ilogb
[7.12.6.6 The ldexp functions] This function multiplies a floating-point number by an integral power of 2.|ldexp
[7.12.6.7 The log functions] This function computes the base-e (natural) logarithm of x.|log
[7.12.6.8 The log10 functions] This function computes the base-10 (common) logarithm of x.|log10
[7.12.6.9 The log1p functions] This function computes the base-e (natural) logarithm of 1 plus the argument.|log1p
[7.12.6.10 The log2 functions] This function computes the base-2 logarithm of x.|log2
[7.12.6.11 The logb functions] This function extracts the exponent of x, as a signed integer value in floating-point format.|logb
[7.12.6.12 The modf functions] This function breaks the argument value into integral and fractional parts, each of which has the same type and sign as the argument.|modf
[7.12.7.1 The cbrt functions] This function computes the real cube root of x.|cbrt
[7.12.7.2 The fabs functions] This function computes the absolute value of a floating-point number x.|fabs
[7.12.7.3 The hypot functions] This function computes the square root of the sum of the squares of x and y, without undue overflow or underflow.|hypot
[7.12.7.4 The pow functions] This function computes x raised to the power y.|pow
[7.12.7.5 The sqrt functions] This function computes the nonnegative square root of x.|sqrt
[7.12.8.1 The erf functions] This function computes the error function of x.|erf
[7.12.8.2 The erfc functions] This function computes the complementary error function of x.|erfc
[7.12.8.3 The lgamma functions] This function computes the natural logarithm of the absolute value of gamma of x.|lgamma
[7.12.8.4 The tgamma functions] This function computes the gamma function of x.|tgamma
[7.12.9.1 The ceil functions] This function computes the smallest integer value not less than x.|ceil
[7.12.9.2 The floor functions] This function computes the largest integer value not greater than x.|floor
[7.12.9.3 The nearbyint functions] This function rounds its argument to an integer value in floating-point format, using the current rounding direction and without raising the ``inexact'' floating-point exception.|nearbyint
[7.12.9.3 The nearbyint functions] This function rounds its argument to an integer value in floating-point format, using the current rounding direction and raises the ``inexact'' floating-point exception if the result differs in value from the argument.|rint
[7.12.9.6 The round functions] This function rounds its argument to the nearest integer value in floating-point format, rounding halfway cases away from zero, regardless of the current rounding direction.|round
[7.12.9.8 The trunc functions] This function rounds its argument to the integer value, in floating format, nearest to but no larger in magnitude than the argument.|trunc
[7.12.10.1 The fmod functions] This function computes the floating-point remainder of x/y.|fmod
[7.12.10.2 The remainder functions] This function computes the remainder x REM y as required by IEC 60559.|remainder
[7.12.11.1 The copysign functions] This function produces a value with the magnitude of x and the sign of y.|copysign
[7.12.11.2 The nan functions] This function returns a quiet NaN, if available, with content indicated through its argument. If the implementation does not support quiet NaNs, the functions return zero.|nan
[7.12.11.3 The nextafter functions] This function determines the next representable value, in the type of the function, after x in the direction of y, where x and y are first converted to the type of the function.|nextafter
[7.12.11.4 The nexttoward functions] This function is equivalent to the nextafter function except that the second parameter has type long double and the function returns y converted to the type of the function if x equals y.|nexttoward
[7.12.12.1 The fdim functions] This function determines the positive difference between its arguments.|fdim
[7.12.12.2 The fmax functions] This function determines the maximum numeric value of its arguments|fmax
[7.12.12.3 The fmin functions] This function determines the minimum numeric value of its arguments.|fmin
[7.12.13.1 The fma functions] This function computes (x * y) + z, rounded as one ternary operation.|fma
[7.13 Nonlocal jumps <setjmp.h>] This header defines the macro setjmp, and declares one function and one type, for bypassing the normal function call and return discipline.|setjmp.h
[7.13 Nonlocal jumps <setjmp.h>] This type is an array type suitable for holding the information needed to restore a calling setjmp environment.|jmp_buf
[7.13.1.1 The setjmp macro] This macro saves its calling environment in its jmp_buf argument for later use by the longjmp function.|setjmp
[7.13.1.1 The setjmp macro] The setjmp macro saves its calling environment in its jmp_buf argument for later use by this function.|longjmp
[7.13.2.1 The longjmp function] This function restores the environment saved by the most recent invocation of the setjmp macro in the same invocation of the program with the corresponding jmp_buf argument.|longjmp
[7.13.2.1 The longjmp function] If longjmp is called without a prior invocation of this macro the behavior is undefined.|setjmp
[7.13.2.1 The longjmp function] The longjmp function that returns control back to the point of the setjmp invocation might cause this to happen to memory associated with a variable length array object.|squandered|wasted|lost
[7.14 Signal handling <signal.h>] This header declares a type and two functions and defines several macros, for handling various signals (conditions that may be reported during program execution).|signal.h
[7.14 Signal handling <signal.h>] This is the (possibly volatile-qualified) integer type of an object that can be accessed as an atomic entity, even in the presence of asynchronous interrupts.|sig_atomic_t
[7.14 Signal handling <signal.h>] This macro is a signal number denoting abnormal termination, such as is initiated by the abort function.|SIGABRT
[7.14 Signal handling <signal.h>] This macro is a signal number denoting an erroneous arithmetic operation, such as zero divide or an operation resulting in overflow.|SIGFPE
[7.14 Signal handling <signal.h>] This macro is a signal number denoting the detection of an invalid function image, such as an invalid instruction.|SIGILL
[7.14 Signal handling <signal.h>] This macro is a signal number denoting the receipt of an interactive attention signal.|SIGINT
[7.14 Signal handling <signal.h>] This macro is a signal number denoting an invalid access to storage.|SIGSEGV
[7.14 Signal handling <signal.h>] This macro is a signal number denoting a termination request sent to the program.|SIGTERM
[7.14 Signal handling <signal.h>] The complete set of signals, their semantics, and their default handling is implementation-defined; all signal numbers shall be this kind value.|nonnegative
[7.14.1.1 The signal function] If the value of the function passed to signal() is this, default handling for that signal will occur.|SIG_DFL
[7.14.1.1 The signal function] If the value of the function passed to signal() is this, the signal will be ignored.|SIG_IGN
[7.14.1.1 The signal function] An invocation of a function because of a signal, or (recursively) of any further functions called by that invocation (other than functions in the standard library), is called this.|signal handler
[7.14.1.1 The signal function] If the signal occurs as the result of calling the abort or raise function, the signal handler shall not call this function.|raise
[7.14.1.1 The signal function] If any signal is generated by this kind of signal handler, the behavior is undefined.|asynchronous
[7.14.2.1 The raise function] This function causes the handler for the signal specified by its argument to be invoked.|raise
[7.14.2.1 The raise function] If a signal handler is called, this function shall not return until after the signal handler does.|raise
[7.16 Variable arguments <stdarg.h>] This type is a complete object type suitable for holding information needed by the macros va_start, va_arg, va_end, and va_copy.|va_list
[7.16 Variable arguments <stdarg.h>] If access to the varying arguments is desired, the called function shall declare an object having this type.|va_list
[7.16.1 Variable argument list access macros] Each invocation of the va_start and va_copy macros shall be matched by a corresponding invocation of this macro in the same function.|va_end
[7.16.1.3 The va_end macro] If there is no corresponding invocation of the va_start or va_copy macro, or if the va_end macro is not invoked before the return, the behavior is this.|undefined
[7.16.1.4 The va_start macro] This  macro initializes a unique va_list for subsequent use by the va_arg and va_end macros.|va_start
[7.16.1.4 The va_start macro] Neither the va_start nor va_copy macro shall be invoked to reinitialize a va_list without an intervening invocation of this macro for the same va_list.|va_end
[7.17.1 Introduction] This header defines several macros and declares several types and functions for performing atomic operations on data shared between threads.|stdatomic.h
[7.17.1 Introduction] This type is an enumerated type whose enumerators identify memory ordering constraints.|memory_order
[7.17.1 Introduction] This type is a structure type representing a lock-free, primitive atomic flag.|atomic_flag
[7.17.2.1 The ATOMIC_VAR_INIT macro] An atomic object with automatic storage duration that is not explicitly initialized using this macro is initially in an indeterminate state; however, the default (zero) initialization for objects with static or thread-local storage duration is guaranteed to produce a valid state.|ATOMIC_VAR_INIT
[7.17.3 Order and consistency] These Atomic operations shall always read the last value (in the modification order) stored before the write associated with such an operation.|read-modify-write{Sometimes known simply as RMW.}|RMW{RMW stands for read-modify-write.}
[7.17.3 Order and consistency] This shall only store a value that has been computed from constants and program input values by a finite sequence of program evaluations, such that each evaluation observes the values of variables as computed by the last prior assignment in the sequence.|atomic store
[7.17.4 Fences] A fence with acquire semantics is called this.|acquire fence{That was kind of obvious, wasn't it?}
[7.17.4 Fences] A fence with release semantics is called this.|release fence{That was kind of obvious, wasn't it?}
[7.17.4.2 The atomic_signal_fence function] This function can be used to specify the order in which actions performed by the thread become visible to the signal handler.|atomic_signal_fence
[7.17.5 Lock-free property] This value for the atomic lock-free macros indicates that the integer or address atomic type is never lock-free.|0|zero
[7.17.5 Lock-free property] This value for the atomic lock-free macros indicates that the integer or address atomic type is sometimes lock-free.|1|one
[7.17.5 Lock-free property] This value for the atomic lock-free macros indicates that the integer or address atomic type is always lock-free.|2|two
[7.17.5.1 The atomic_is_lock_free generic function] This generic function indicates whether or not the object pointed to by obj is lock-free.|atomic_is_lock_free
[7.17.8 Atomic flag type and operations] This type provides the classic test-and-set functionality. It has two states, set and clear.|atomic_flag
[7.17.8 Atomic flag type and operations] Operations on an object of this type shall be lock-free and address-free.|atomic_flag
[7.17.8 Atomic flag type and operations] An atomic_flag that is not explicitly initialized with this macro is initially in an indeterminate state.|ATOMIC_FLAG_INIT
[7.18 Boolean type and values <stdbool.h>] The <stdbool.h> macro bool expands to this.|_Bool
[7.18 Boolean type and values <stdbool.h>] This <stdbool.h> macro expands to the integer constant 1.|true
[7.18 Boolean type and values <stdbool.h>] This <stdbool.h> macro expands to the integer constant 0.|false
[7.19 Common definitions <stddef.h>] This type is the signed integer type of the result of subtracting two pointers.|ptrdiff_t
[7.19 Common definitions <stddef.h>] This type is the unsigned integer type of the result of the sizeof operator.|size_t
[7.19 Common definitions <stddef.h>] This type is an object type whose alignment is as great as is supported by the implementation in all contexts.|max_align_t
[7.19 Common definitions <stddef.h> ] This type is an integer type whose range of values can represent distinct codes for all members of the largest extended character set specified among the supported locales.|wchar_t
[7.19 Common definitions <stddef.h>] This macro expands to an implementation-defined null pointer constant.|NULL
[7.19 Common definitions <stddef.h>] This macro expands to an integer constant expression that has type size_t, the value of which is the offset in bytes, to a structure member from the beginning of its structure.|offsetof
[7.20 Integer types <stdint.h>] This header declares sets of integer types having specified widths, and defines corresponding sets of macros. It also defines macros that specify limits of integer types corresponding to types defined in other standard headers.|stdint.h
[7.20.1.4 Integer types capable of holding object pointers] This type designates a signed integer type with the property that any valid pointer to void can be converted to this type, then converted back to pointer to void, and the result will compare equal to the original pointer.|intptr_t
[7.20.1.4 Integer types capable of holding object pointers] This type designates an unsigned integer type with the property that any valid pointer to void can be converted to this type, then converted back to pointer to void, and the result will compare equal to the original pointer.|uintptr_t
[7.20.1.5 Greatest-width integer types] This type designates a signed integer type capable of representing any value of any signed integer type.|intmax_t
[7.20.1.5 Greatest-width integer types] This type designates an unsigned integer type capable of representing any value of any unsigned integer type.|uintmax_t
[7.20.3 Limits of other integer types] This macro is the minimum limit of ptrdiff_t.|PTRDIFF_MIN
[7.20.3 Limits of other integer types] This macro is the maximum limit of ptrdiff_t.|PTRDIFF_MAX
[7.20.3 Limits of other integer types] This macro is the minimum limit of sig_atomic_t.|SIG_ATOMIC_MIN
[7.20.3 Limits of other integer types] This macro is the maximum limit of sig_atomic_t.|SIG_ATOMIC_MAX
[7.20.3 Limits of other integer types] This macro is the maximum limit of size_t.|SIZE_MAX
[7.20.3 Limits of other integer types] This macro is the minimum limit of wchar_t.|WCHAR_MIN
[7.20.3 Limits of other integer types] This macro is the maximum limit of wchar_t.|WCHAR_MAX
[7.20.3 Limits of other integer types] This macro is the minimum limit of wint_t.|WINT_MIN
[7.20.3 Limits of other integer types] This macro is the maximum limit of wint_t.|WINT_MAX
[7.21.1 Introduction] This header defines several macros, and declares three types and many functions for performing input and output.|stdio.h
[7.21.1 Introduction] This type is an object type capable of recording all the information needed to control a stream.|FILE
[7.21.1 Introduction] This macro expands to an integer constant expression that is the size of the buffer used by the setbuf function;|BUFSIZ
[7.21.1 Introduction] This macro expands to an integer constant expression, with type int and a negative value, that is returned by several functions to indicate end-of-file, that is, no more input from a stream.|EOF
[7.21.1 Introduction] This macro expands to an integer constant expression that is the minimum number of files that the implementation guarantees can be open simultaneously.|FOPEN_MAX
[7.21.1 Introduction] This macro expands to an integer constant expression that is the size needed for an array of char large enough to hold the longest file name string that the implementation guarantees can be opened.|FILENAME_MAX
[7.21.1 Introduction] This macro expands to an integer constant expression that is the size needed for an array of char large enough to hold a temporary file name string generated by the tmpnam function.|L_tmpnam
[7.21.1 Introduction] The macros SEEK_CUR, SEEK_END, and SEEK_SET expand to integer constant expressions with distinct values, suitable for use as the third argument to this function.|fseek
[7.21.1 Introduction] This macro expands to an integer constant expression that is the minimum number of unique file names that can be generated by the tmpnam function.|TMP_MAX
[7.21.1 Introduction] This symbol is an expression of type ``pointer to FILE'' that points to the FILE object associated with the standard error stream.|stderr
[7.21.1 Introduction] This symbol is an expression of type ``pointer to FILE'' that points to the FILE object associated with the standard output stream.|stdout
[7.21.1 Introduction] This symbol is an expression of type ``pointer to FILE'' that points to the FILE object associated with the standard input stream.|stdin
[7.21.1 Introduction] If the implementation imposes no practical limit on the length of file name strings, the value of this macro should instead be the recommended size of an array intended to hold a file name string.|FILENAME_MAX
[7.21.2 Streams] This kind of stream is an ordered sequence of characters composed into lines, each line consisting of zero or more characters plus a terminating new-line character.|text
[7.21.2 Streams] This kind of stream is an ordered sequence of characters that can transparently record internal data.|binary
[7.21.2 Streams] An implementation shall support text files with lines containing at least this many characters, including the terminating new-line character.|254
[7.21.2 Streams] The value of the macro BUFSIZ shall be at least this.|256
[7.21.3 Files] This is associated with an external file (which may be a physical device) by opening a file, which may involve creating a new file.|stream
[7.21.3 Files] If a file can support positioning requests (such as a disk file, as opposed to a terminal), then a file position indicator associated with the stream is positioned at the start of the file, unless the file is opened with this mode in which case it is implementation-defined whether the file position indicator is initially positioned at the beginning or the end of the file.|append
[7.21.3 Files] When a stream has this kind of buffering, characters are intended to appear from the source or at the destination as soon as possible.|unbuffered|none|no
[7.21.3 Files] When a stream has this kind of buffering, characters are intended to be transmitted to or from the host environment as a block when a buffer is filled.|fully buffered|fully|full
[7.21.3 Files] When a stream has this kind of buffering, characters are intended to be transmitted to or from the host environment as a block when a new-line character is encountered.|line buffered|line
[7.21.3 Files] A file may be disassociated from a controlling stream by doing this to the file.|closing|close
[7.21.3 Files] If the main function returns to its original caller, or if this function is called, all open files are closed (hence all output streams are flushed) before program termination.|exit
[7.21.3 Files] Functions that open nontemporary files require this, which is a string.|file name|filename
[7.21.3 Files] The value of FOPEN_MAX shall be at least this, including the three standard text streams.|8|eight
[7.21.4.1 The remove function] This function causes the file whose name is the string pointed to by filename to be no longer accessible by that name unless it is created anew.|remove
[7.21.4.1 The remove function] If the file is open, the behavior of the remove function is this.|implementation-defined
[7.21.4.2 The rename function] This function causes the file whose name is the string pointed to by its first argument to be henceforth known by the name given by the string pointed to by its second argument.|rename
[7.21.4.2 The rename function] If a file named by the string pointed to by new exists prior to the call to the rename function, the behavior is this.|implementation-defined
[7.21.4.3 The tmpfile function] This function creates a temporary binary file that is different from any other existing file and that will automatically be removed when it is closed or at program termination.|tmpfile
[7.21.4.3 The tmpfile function] If the program terminates abnormally, whether an open temporary file is removed is this.|implementation-defined
[7.21.4.4 The tmpnam function] This function generates a string that is a valid file name and that is not the same as the name of an existing file. The function is potentially capable of generating at least TMP_MAX different strings, but any or all of them may already be in use by existing files and thus not be suitable return values.|tmpnam
[7.21.4.4 The tmpnam function] The value of the macro TMP_MAX shall be at least this.|25|twenty-five
[7.21.5.1 The fclose function] A successful call to this function causes the stream pointed to by its stream argument to be flushed and the associated file to be closed.|fclose
[7.21.5.1 The fclose function] The fclose function returns zero if the stream was successfully closed, or this value if any errors were detected.|EOF
[7.21.5.2 The fflush function] If its stream argument points to an output stream or an update stream in which the most recent operation was not input, this function causes any unwritten data for that stream to be delivered to the host environment to be written to the file.|fflush
[7.21.5.2 The fflush function] If its argument is this value, the fflush function performs the flushing action on all applicable streams.|null pointer|NULL|0
[7.21.5.3 The fopen function] This function opens the file whose name is the string pointed to by filename, and associates a stream with it.|fopen
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is opened as a text file for reading.|"r"|r
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is created as a text file for writing and truncated to zero length if it already exists.|"w"|w
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is created as a text file for writing or an error is returned if it already exists.|"wx"|wx
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is opened for appending; that is, opened or created as a text file for writing at end-of-file.|"a"|a
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is opened as binary file for reading|"rb"|rb
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is created as a binary file for writing and truncated to zero length if it already exists.|"wb"|wb
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is created as a binary file for writing or an error is returned if it already exists.|"wbx"|wbx
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is opened as a binary file for appending; that is, opened or created as a binary file for writing at end-of-file.|"ab"|ab
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is opened as a text file for updating (reading and writing).|"r+"|r+
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is created as a text file for updating (reading and writing) and truncated to zero length if it already exists.|"w+"|w+
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is created as a text file for updating (reading and writing) or an error is returned if it already exists.|"w+x"|w+x
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is opened or created as a text file for updating (reading and writing), writing at end-of-file.|"a+"|a+
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is opened as a binary file for updating (reading and writing).|"r+b"|"rb+"|r+b|rb+
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is created as a binary file for updating (reading and writing) and truncated to zero length if it already exists.|"w+b"|"wb+"|w+b|wb+
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is created as a binary file for updating (reading and write) or an error is returned if it already exists.|"w+bx"|"wb+x"|w+bx|wb+x
[7.21.5.3 The fopen function] If fopen's mode string is this, the file is opened or created as a binary file for updating (reading and writing), writing at end-of-file.|"a+b"|"ab+"|a+b|ab+
[7.21.5.3 The fopen function] When a file is opened with this kind of mode, both input and output may be performed on the associated stream.|update
[7.21.5.3 The fopen function] When a file is opened in this kind of mode, output shall not be directly followed by input without an intervening call to the fflush function or to a file positioning function (fseek, fsetpos, or rewind), and input shall not be directly followed by output without an intervening call to a file positioning function, unless the input operation encounters end-of-file.|update
[7.21.5.3 The fopen function] When opened, a stream is fully buffered if and only if it can be determined not to refer to this kind of device.|interactive
[7.21.5.4 The freopen function] This function opens the file whose name is the string pointed to by a filename as its first argument and associates its stream to the stream pointed to by its third argument.|freopen
[7.21.5.4 The freopen function] If the filename argument is this value, the freopen function attempts to change the mode of the stream to that specified by mode, as if the name of the file currently associated with the stream had been used.|NULL|0|null pointer
[7.21.5.6 The setvbuf function] This function changes how a stream is buffered.|setvbuf|setbuf
[7.21.6.1 The fprintf function] This function writes output to the stream pointed to by its stream argument, under control of the string pointed to by its format argument that specifies how subsequent arguments are converted for output.|fprintf
[7.21.6.1 The fprintf function] This fprintf length modifier specifies that a following conversion specifier applies to a signed char or unsigned char argument.|hh
[7.21.6.1 The fprintf function] This fprintf length modifier specifies that a following conversion specifier applies to a short int or unsigned short int argument.|h
[7.21.6.1 The fprintf function] This fprintf length modifier specifies that a following conversion specifier applies to a long int or unsigned long int argument|l
[7.21.6.1 The fprintf function] This fprintf length modifier specifies that a following conversion specifier applies to a long long int or unsigned long long int argument.|ll
[7.21.6.1 The fprintf function] This fprintf length modifier specifies that a following conversion specifier applies to an intmax_t or uintmax_t argument.|j
[7.21.6.1 The fprintf function] This fprintf length modifier specifies that a following conversion specifier applies to a size_t or the corresponding signed integer type argument.|z
[7.21.6.1 The fprintf function] This fprintf length modifier specifies that a following conversion specifier applies to a ptrdiff_t or the corresponding unsigned integer type argument.|t
[7.21.6.1 The fprintf function] This fprintf length modifier specifies that a following conversion specifier applies to a long double argument.|L
[7.21.6.2 The fscanf function] This function reads input from the stream pointed to by its stream argument, under control of the string pointed to by its format argument that specifies the admissible input sequences and how they are to be converted for assignment, using subsequent arguments as pointers to the objects to receive the converted input.|fscanf
[7.21.6.2 The fscanf function] A fscanf directive composed of this kind of character(s) is executed by reading input up to the first non-white-space character (which remains unread), or until no more characters can be read.|white-space|whitespace
[7.21.6.2 The fscanf function] If the fscanf input item is not a matching sequence, the execution of the fscanf directive fails: this condition is called this.|matching failure
[7.21.6.2 The fscanf function] If an encoding error or a read error prevented handling of an input item from a fscanf stream, the execution of the fscanf directive fails: this condition is called this.|input failure
[7.21.6.2 The fscanf function] The fscanf function returns this value if an input failure occurs before the first conversion (if any) has completed.|EOF
[7.21.6.3 The printf function] This function is equivalent to fprintf with the argument stdout interposed before its arguments.|printf
[7.21.6.4 The scanf function] This function is equivalent to fscanf with the argument stdin interposed before its arguments.|scanf
[7.21.6.5 The snprintf function] This function is equivalent to fprintf, except that the output is written into an array (up to a specified length limit) rather than to a stream.|snprintf
[7.21.6.6 The sprintf function] This function is equivalent to fprintf, except that the output is written into an array (without an length limit) rather than to a stream.|sprintf
[7.21.6.7 The sscanf function] This function is equivalent to fscanf, except that input is obtained from a string rather than from a stream.|sscanf
[7.21.6.8 The vfprintf function] This function is equivalent to fprintf, with a variable argument list.|vfprintf
[7.21.6.9 The vfscanf function] This function is equivalent to fscanf, with a variable argument list.|vfscanf
[7.21.6.10 The vprintf function] This function is equivalent to printf, with a variable argument list.|vprintf
[7.21.6.11 The vscanf function] This function is equivalent to scanf, with a variable argument list.|vscanf
[7.21.6.12 The vsnprintf function] This function is equivalent to snprintf, with a variable argument list.|vsnprintf
[7.21.6.13 The vsprintf function] This function is equivalent to sprintf, with a variable argument list.|vsprintf
[7.21.6.14 The vsscanf function] This function is equivalent to sscanf, with a variable argument list.|vsscanf
[7.21.7.1 The fgetc function] If the end-of-file indicator for the input stream pointed to by stream is not set and a next character is present, this function obtains that character as an unsigned char converted to an int and advances the associated file position indicator for the stream (if defined).|fgetc
[7.21.7.1 The fgetc function] An end-of-file and a read error can be distinguished by use of these functions (name both, separated by "and").|feof and ferror|ferror and feof
[7.21.7.2 The fgets function] This function reads at most one less than the number of characters specified by its n argument from the stream pointed to by its stream argument into the array pointed to by its s argument.|fgets
[7.21.7.2 The fgets function] This character is written immediately after the last character read into the array by the fgets function.|null character|0|'\0'
[7.21.7.2 The fgets function] If end-of-file is encountered by fgets and no characters have been read into the array, this value is returned.|NULL|null pointer|0
[7.21.7.2 The fgets function] If end-of-file is encountered by fgets and no characters have been read into the array, the contents of the array are this.|unchanged
[7.21.7.2 The fgets function] If a read error occurs during the fgets operation, the array contents are this.|indeterminate
[7.21.7.3 The fputc function] This function writes the character specified by its argument (converted to an unsigned char) to the output stream pointed to by its stream argument, at the position indicated by the associated file position indicator for the stream (if defined), and advances the indicator appropriately.|fputc
[7.21.7.3 The fputc function] If the file cannot support positioning requests, or if the stream was opened with this kind of mode, the character is written to the end of output stream.|append
[7.21.7.4 The fputs function] This function writes the string pointed to by its argument to the stream pointed to by its stream argument.|fputs
[7.21.7.5 The getc function] This function is equivalent to fgetc, except that if it is implemented as a macro, it may evaluate stream more than once, so the argument should never be an expression with side effects.|getc
[7.21.7.6 The getchar function] This function is equivalent to getc with the argument stdin.|getchar
[7.21.7.6 The getchar function] This function returns the next character from the input stream pointed to by stdin.|getchar
[7.21.7.7 The putc function] This function is equivalent to fputc, except that if it is implemented as a macro, it may evaluate stream more than once, so that argument should never be an expression with side effects.|putc
[7.21.7.8 The putchar function] This function is equivalent to putc with the second argument stdout.|putchar
[7.21.7.9 The puts function] This function writes the string pointed to by its argument to the stream pointed to by stdout, and appends a new-line character to the output.|puts
[7.21.7.10 The ungetc function] This function pushes the character specified by its argument (converted to an unsigned char) back onto the input stream pointed to by its stream argument.|ungetc
[7.21.7.10 The ungetc function] If the ungetc function is called too many times on the same stream without an intervening read or file positioning operation on that stream, the operation may do this.|fail
[7.21.8.1 The fread function] This function reads, into the array pointed to by ptr, up to nmemb elements whose size is specified by size, from the stream pointed to by stream.|fread
[7.21.8.1 The fread function] If a partial element is read by fread, its value is this.|indeterminate
[7.21.8.2 The fwrite function] This function writes, from the array pointed to by ptr, up to nmemb elements whose size is specified by size, to the stream pointed to by stream.|fwrite
[7.21.9.1 The fgetpos function] This function stores the current values of the parse state (if any) and file position indicator for the stream pointed to by stream in the object pointed to by pos.|fgetpos
[7.21.9.1 The fgetpos function] If successful, the fgetpos function returns zero; on failure, the fgetpos function returns nonzero and stores an implementation-defined positive value in this object.|errno
[7.21.9.2 The fseek function] This function sets the file position indicator for the stream pointed to by its stream argument.|fseek
[7.21.9.2 The fseek function] For a text stream, offset argument shall be either zero or a value returned by an earlier successful call to the ftell function on a stream associated with the same file and its whence argument shall be this.|SEEK_SET
[7.21.9.2 The fseek function] The fseek function returns this value for a request that cannot be satisfied.|nonzero|!0
[7.21.9.3 The fsetpos function] This function sets the mbstate_t object (if any) and file position indicator for the stream pointed to by stream according to the value of the object pointed to by pos.|fsetpos
[7.21.9.3 The fsetpos function] The fsetpos function sets the mbstate_t object (if any) and file position indicator for the stream pointed to by stream according to the value of the object pointed to by pos, which shall be a value obtained from an earlier successful call to this function on a stream associated with the same file.|fgetpos
[7.21.9.4 The ftell function] This function obtains the current value of the file position indicator for the stream pointed to by stream.|ftell
[7.21.9.5 The rewind function] This function sets the file position indicator for the stream pointed to by stream to the beginning of the file.|rewind
[7.21.10.1 The clearerr function] This function clears the end-of-file and error indicators for the stream pointed to by stream.|clearerr
[7.21.10.2 The feof function] This function tests the end-of-file indicator for the stream pointed to by stream.|feof
[7.21.10.3 The ferror function] This function tests the error indicator for the stream pointed to by stream.|ferror
[7.21.10.4 The perror function] This function maps the error number in the integer expression errno to an error message.|perror
[7.22 General utilities <stdlib.h>] This macro expands to a integer constant expressions that can be used as the argument to the exit function to return unsuccessful termination status to the host environment.|EXIT_FAILURE
[7.22 General utilities <stdlib.h>] This macro expands to a integer constant expressions that can be used as the argument to the exit function to return successful termination status to the host environment.|EXIT_SUCCESS
[7.22 General utilities <stdlib.h>] This macro expands to an integer constant expression that is the maximum value returned by the rand function.|RAND_MAX
[7.22 General utilities <stdlib.h>] This macro expands to a positive integer expression with type size_t that is the maximum number of bytes in a multibyte character for the extended character set specified by the current locale (category LC_CTYPE).|MB_CUR_MAX
[7.22.1.1 The atof function] This function converts the initial portion of the string pointed to by its argument to double representation.|atof
[7.22.2.1 The rand function] This function computes a sequence of pseudo-random integers in the range 0 to RAND_MAX.|rand
[7.22.2.1 The rand function] The value of the RAND_MAX macro shall be at least this.|32767
[7.22.2.2 The srand function] This function uses the argument as a seed for a new sequence of pseudo-random numbers to be returned by subsequent calls to rand.|srand
[7.22.2.2 The srand function] If srand is then called with the same seed value, the sequence of pseudo-random numbers shall be this.|repeated|identical
[7.22.2.2 The srand function] If rand is called before any calls to srand have been made, the same sequence shall be generated as when srand is first called with this seed value.|1|one
[7.22.3.1 The aligned_alloc function] This function allocates space for an object whose alignment is specified by alignment, whose size is specified by size, and whose value is indeterminate.|aligned_alloc
[7.22.3.2 The calloc function] This function allocates space for an array of nmemb objects, each of whose size is specified by the size argument.|calloc
[7.22.3.3 The free function] This function causes the space pointed to by the ptr argument to be deallocated, that is, made available for further allocation.|free
[7.22.3.3 The free function] If the ptr argument of the free function is this, no action occurs.|null pointer|0|NULL
[7.22.3.4 The malloc function] This function allocates space for an object whose size is specified by the size argument and whose value is indeterminate.|malloc
[7.22.3.5 The realloc function] This function deallocates the old object pointed to by the ptr argument and returns a pointer to a new object that has the size specified by the size argument.|realloc
[7.22.3.5 The realloc function] If the ptr argument is a null pointer, the realloc function behaves like this function for the specified size.|malloc
[7.22.3.5 The realloc function] If the ptr argument is this value, the realloc function behaves like the malloc function for the specified size.|null pointer|0|NULL
[7.22.4.1 The abort function] This function causes abnormal program termination to occur.|abort{That is, unless the signal SIGABRT is being caught and the signal handler does not return.}
[7.22.4.1 The abort function] An implementation-defined form of this kind of termination is returned to the host environment by means of the function call raise(SIGABRT).|unsuccessful
[7.22.4.2 The atexit function] This function registers the function pointed to by func, to be called without arguments at normal program termination.|atexit
[7.22.4.2 The atexit function] The implementation shall support the atexit registration of at least this many functions.|32|thirty-two
[7.22.4.3 The at_quick_exit function] This function registers the function pointed to by func, to be called without arguments should quick_exit be called.|at_quick_exit
[7.22.4.4 The exit function] This function causes normal program termination to occur.|exit
[7.22.4.4 The exit function] No functions registered by this function are called if exit is called.|at_quick_exit
[7.22.4.4 The exit function] If, during the call to any function registered by atexit, a call to this function is made that would terminate the call to the registered function, the behavior is undefined.|longjmp
[7.22.4.4 The exit function] If the value of the argument to the exit function is this, an implementation-defined form of the status successful termination is returned.|0|zero|EXIT_SUCCESS
[7.22.4.4 The exit function] If the value of the argument to the exit function is this, an implementation-defined form of the status unsuccessful termination is returned.|EXIT_FAILURE|nonzero
[7.22.4.5 The _Exit function] This function causes normal program termination to occur and control to be returned to the host environment. No functions registered by the atexit function, the at_quick_exit function, or signal handlers registered by the signal function are called.|_Exit
[7.22.4.6 The getenv function] This function searches an environment list, provided by the host environment, for a string that matches the string pointed to by name.|getenv
[7.22.4.7 The quick_exit function] This function causes normal program termination to occur. No functions registered by the atexit function or signal handlers registered by the signal function are called.|quick_exit
[7.22.4.7 The quick_exit function] If a signal is raised while the quick_exit function is executing, the behavior is this.|undefined
[7.22.4.8 The system function] If the argument of the system function is this, the system function determines whether the host environment has a command processor and returns nonzero if so.|null pointer|NULL|0
[7.22.4.8 The system function] If the argument of the system function is a null pointer, the system function determines whether the host environment has this and returns nonzero if so.|command processor
[7.22.4.8 The system function] If the argument is not a null pointer, this function passes the string pointed to by its argument to the host environment's command processor to be executed in a manner which the implementation shall document; this might then cause the program calling system to behave in a non-conforming manner or to terminate.|system
[7.22.5.1 The bsearch function] This function searches an array of nmemb objects, the initial element of which is pointed to by base, for an element that matches the object pointed to by key.|bsearch
[7.22.5.2 The qsort function] This function sorts an array of nmemb objects, the initial element of which is pointed to by base. The contents of the array are sorted into ascending order according to a comparison function pointed to by compar, which is called with two arguments that point to the objects being compared.|qsort
[7.22.7.1 The mblen function] This function determines the number of bytes contained in the multibyte character.|mblen
[7.22.7.2 The mbtowc function] This function converts a multibyte character into a wide character.|mbtowc
[7.22.7.3 The wctomb function] This function converts a wide character into a multibyte character.|wctomb
[7.22.8.1 The mbstowcs function] This function converts a sequence of multibyte characters that begins in the initial shift state from the array pointed to by its argument into a sequence of corresponding wide characters.|mbstowcs
[7.22.8.2 The wcstombs function] This function converts a sequence of wide characters from the array pointed to by its argument into a sequence of corresponding multibyte characters that begins in the initial shift state.|wcstombs
[7.23 _Noreturn <stdnoreturn.h>] This header defines the macro noreturn which expands to _Noreturn.|stdnoreturn.h
[7.23 _Noreturn <stdnoreturn.h>] The header <stdnoreturn.h> defines the macro noreturn which expands to this.|_Noreturn
[7.24.2.1 The memcpy function] This function copies n characters from the object pointed to by s2 into the object pointed to by s1, including any null characters.|memcpy
[7.24.2.2 The memmove function] This function copies n characters from the object pointed to by s2 into the object pointed to by s1. Copying takes place as if the n characters from the object pointed to by s2 are first copied into a temporary array of n characters that does not overlap the objects pointed to by s1 and s2.|memmove
[7.24.2.3 The strcpy function] This function copies the string pointed to by s2 (including the terminating null character) into the array pointed to by s1.|strcpy
[7.24.2.4 The strncpy function] This function copies not more than n characters (characters that follow a null character are not copied) from the array pointed to by s2 to the array pointed to by s1.|strncpy
[7.24.3.1 The strcat function] This function appends a copy of the string pointed to by s2 (including the terminating null character) to the end of the string pointed to by s1.|strcat
[7.24.3.2 The strncat function] This function appends not more than n characters (a null character and characters that follow it are not appended) from the array pointed to by s2 to the end of the string pointed to by s1. A terminating null character is always appended to the result.|strncat
[7.24.4.1 The memcmp function] This function compares the first n characters of the object pointed to by s1 to the first n characters of the object pointed to by s2, and does not stop comparing if a null character is encountered.|memcmp
[7.24.4.2 The strcmp function] This function compares the string pointed to by s1 to the string pointed to by s2.|strcmp
[7.24.4.3 The strcoll function] This function compares the string pointed to by s1 to the string pointed to by s2, both interpreted as appropriate to the LC_COLLATE category of the current locale.|strcoll
[7.24.4.3 The strcoll function] The strcoll function compares the string pointed to by s1 to the string pointed to by s2, both interpreted as appropriate to this category of the current locale.|LC_COLLATE
[7.24.4.4 The strncmp function] This function compares not more than n characters (characters that follow a null character are not compared) from the array pointed to by s1 to the array pointed to by s2.|strncmp
[7.24.4.5 The strxfrm function] This function transforms the string pointed to by s2 and places the resulting string into the array pointed to by s1.|strxfrm
[7.24.5.1 The memchr function] This function locates the first occurrence of c (converted to an unsigned char) in the initial n characters (each interpreted as unsigned char) of the object pointed to by s, and does not stop searching if a null character is encountered.|memchr
[7.24.5.2 The strchr function] This function locates the first occurrence of c (converted to a char) in the string pointed to by s.|strchr
[7.24.5.3 The strcspn function] This function computes the length of the maximum initial segment of the string pointed to by s1 which consists entirely of characters not from the string pointed to by s2.|strcspn
[7.24.5.4 The strpbrk function] This function locates the first occurrence in the string pointed to by s1 of any character from the string pointed to by s2.|strpbrk
[7.24.5.5 The strrchr function] This function locates the last occurrence of c (converted to a char) in the string pointed to by s.|strrchr
[7.24.5.6 The strspn function] This function computes the length of the maximum initial segment of the string pointed to by s1 which consists entirely of characters from the string pointed to by s2.|strspn
[7.24.5.7 The strstr function] This function locates the first occurrence in the string pointed to by s1 of the sequence of characters (excluding the terminating null character) in the string pointed to by s2.|strstr
[7.24.5.8 The strtok function] A sequence of calls to this function breaks the string pointed to by s1 into a sequence of tokens, each of which is delimited by a character from the string pointed to by s2.|strtok
[7.24.5.8 The strtok function] The strtok function is not required to avoid data races with other calls to the strtok function. This function can be used instead to avoid data races.|strtok_s{Also, strtok_r is provided by POSIX, but is not standard C.}|strtok_r{This, however, is a POSIX function -- standard C does provide strtok_s for this purpose.}
[7.24.6.1 The memset function] This function copies the value of c (converted to an unsigned char) into each of the first n characters of the object pointed to by s.|memset
[7.24.6.2 The strerror function] This function maps the number in errnum to a message string.|strerror
[7.24.6.2 The strerror function] Typically, the values for errnum come from this object, but strerror shall map any value of type int to a message.|errno
[7.24.6.2 The strerror function] The strerror function is not required to avoid data races with other calls to the strerror function. This function can be used instead to avoid data races.|strerror_s
[7.24.6.3 The strlen function] This function computes the length of the string pointed to by its argument.|strlen
[7.26.1 Introduction] This macro expands to an integer constant expression representing the maximum number of times that destructors will be called when a thread terminates.|TSS_DTOR_ITERATIONS
[7.26.1 Introduction] This type is a complete object type that holds an identifier for a condition variable.|cnd_t
[7.26.1 Introduction] This type is a complete object type that holds an identifier for a thread.|thrd_t
[7.26.1 Introduction] This type is a complete object type that holds an identifier for a thread-specific storage pointer.|tss_t
[7.26.1 Introduction] This type is a complete object type that holds an identifier for a mutex.|mtx_t
[7.26.1 Introduction] This type is the function pointer type void (*)(void*), used for a destructor for a thread-specific storage pointer.|tss_dtor_t
[7.26.1 Introduction] This type is the function pointer type int (*)(void*) that is passed to thrd_create to create a new thread.|thrd_start_t
[7.26.1 Introduction] This type is a complete object type that holds a flag for use by call_once.|once_flag
[7.26.1 Introduction] This enumeration constant is passed to mtx_init to create a mutex object that supports neither timeout nor test and return.|mtx_plain
[7.26.1 Introduction] This enumeration constant is passed to mtx_init to create a mutex object that supports recursive locking.|mtx_recursive
[7.26.1 Introduction] This enumeration constant is passed to mtx_init to create a mutex object that supports timeout.|mtx_timed
[7.26.1 Introduction] This enumeration constant is returned by a timed wait threads.h function to indicate that the time specified in the call was reached without acquiring the requested resource.|thrd_timedout
[7.26.1 Introduction] This enumeration constant is returned by a threads.h function to indicate that the requested operation succeeded.|thrd_success
[7.26.1 Introduction] This enumeration constant is returned by a threads.h function to indicate that the requested operation failed because a resource requested by a test and return function is already in use.|thrd_busy
[7.26.1 Introduction] This enumeration constant is returned by a threads.h function to indicate that the requested operation failed.|thrd_error
[7.26.1 Introduction] This enumeration constant is returned by a threads.h function to indicate that the requested operation failed because it was unable to allocate memory.|thrd_nomem
[7.26.2.1 The call_once function] This function uses the once_flag pointed to by flag to ensure that func is called exactly once, the first time the call_once function is called with that value of flag.|call_once
[7.26.3.1 The cnd_broadcast function] This function unblocks all of the threads that are blocked on the condition variable pointed to by cond at the time of the call.|cnd_broadcast
[7.26.3.1 The cnd_broadcast function] The cnd_broadcast function returns this value on success.|thrd_success
[7.26.3.1 The cnd_broadcast function] The cnd_broadcast function returns this value if the request could not be honored.|thrd_error
[7.26.3.2 The cnd_destroy function] This function releases all resources used by the condition variable pointed to by cond.|cnd_destroy
[7.26.3.3 The cnd_init function] This function creates a condition variable.|cnd_init
[7.26.3.4 The cnd_signal function] This function unblocks one of the threads that are blocked on the condition variable pointed to by cond at the time of the call.|cnd_signal
[7.26.3.5 The cnd_timedwait function] This function atomically unlocks the mutex pointed to by mtx and endeavors to block until the condition variable pointed to by cond is signaled by a call to cnd_signal or to cnd_broadcast, or until after the TIME_UTC-based calendar time pointed to by its ts argument.|cnd_timedwait
[7.26.3.6 The cnd_wait function] This function atomically unlocks the mutex pointed to by mtx and endeavors to block until the condition variable pointed to by cond is signaled by a call to cnd_signal or to cnd_broadcast.|cnd_wait
[7.26.4.1 The mtx_destroy function] This function releases any resources used by the mutex pointed to by mtx.|mtx_destroy
[7.26.4.2 The mtx_init function] This function creates a mutex object with properties indicated by type, which must have one of the six values: mtx_plain for a simple non-recursive mutex, mtx_timed for a non-recursive mutex that supports timeout, mtx_plain \| mtx_recursive for a simple recursive mutex, or mtx_timed \| mtx_recursive for a recursive mutex that supports timeout.|mtx_init
[7.26.4.3 The mtx_lock function] This function blocks until it locks the mutex pointed to by mtx.|mtx_lock
[7.26.4.4 The mtx_timedlock function] This function endeavors to block until it locks the mutex pointed to by mtx or until after the TIME_UTC-based calendar time pointed to by its ts argument.|mtx_timedlock
[7.26.4.5 The mtx_trylock function] This function endeavors to lock the mutex pointed to by mtx.|mtx_trylock
[7.26.4.6 The mtx_unlock function] This function unlocks the mutex pointed to by mtx.|mtx_unlock
[7.26.5.1 The thrd_create function] This function creates a new thread executing func(arg).|thrd_create
[7.26.5.2 The thrd_current function] This function identifies the thread that called it.|thrd_current
[7.26.5.3 The thrd_detach function] This function tells the operating system to dispose of any resources allocated to the thread identified by thr when that thread terminates.|thrd_detach
[7.26.5.4 The thrd_equal function] This function will determine whether the thread identified by thr0 refers to the thread identified by thr1.|thrd_equal
[7.26.5.5 The thrd_exit function] This function terminates execution of the calling thread and sets its result code to res.|thrd_exit
[7.26.5.6 The thrd_join function] This function joins the thread identified by thr with the current thread by blocking until the other thread has terminated.|thrd_join
[7.26.5.7 The thrd_sleep function] This function suspends execution of the calling thread until either the interval specified by duration has elapsed or a signal which is not being ignored is received.|thrd_sleep
[7.26.5.8 The thrd_yield function] This function endeavors to permit other threads to run, even if the current thread would ordinarily continue to run.|thrd_yield
[7.26.6.1 The tss_create function] This function creates a thread-specific storage pointer with destructor dtor, which may be null.|tss_create
[7.26.6.2 The tss_delete function] This function releases any resources used by the thread-specific storage identified by key.|tss_delete
[7.26.6.3 The tss_get function] This function returns the value for the current thread held in the thread-specific storage identified by key.|tss_get
[7.26.6.4 The tss_set function] This function sets the value for the current thread held in the thread-specific storage identified by key to val.|tss_set
[7.27.1 Components of time] This structure holds an interval specified in seconds and nanoseconds (which may represent a calendar time based on a particular epoch).|timespec
[7.27.1 Components of time] This macro expands to an expression with type clock_t that is the number per second of the value returned by the clock function.|CLOCKS_PER_SEC
[7.27.1 Components of time] This macro expands to an integer constant greater than 0 that designates the UTC time base.|TIME_UTC
[7.27.1 Components of time] This structure shall contain at least the following members, in any order: time_t tv_sec; long tv_nsec.|timespec
[7.27.2.1 The clock function] This function determines the processor time used.|clock
[7.27.2.1 The clock function] This function returns the implementation's best approximation to the processor time used by the program since the beginning of an implementation-defined era related only to the program invocation.|clock
[7.27.2.2 The difftime function] This function computes the difference between two calendar times: time1 -time0.|difftime
[7.27.2.2 The difftime function] This function returns the difference of time expressed in seconds as a double.|difftime
[7.27.2.3 The mktime function] This function converts the broken-down time, expressed as local time, in the structure pointed to by timeptr into a calendar time value with the same encoding as that of the values returned by the time function.|mktime
[7.27.2.3 The mktime function] This value causes the mktime function to attempt to determine whether Daylight Saving Time is in effect for the specified time.|negative
[7.27.2.3 The mktime function] The mktime function returns the specified calendar time encoded as a value of this type.|time_t
[7.27.2.4 The time function] This function determines the current calendar time.|time
[7.27.2.4 The time function] This function returns the implementation's best approximation to the current calendar time.|time
[7.27.2.5 The timespec_get function] This function sets the interval pointed to by ts to hold the current calendar time based on the specified time base.|timespec_get
[7.27.3.1 The asctime function] This function converts the broken-down time in the structure pointed to by timeptr into a string in the form Sun Sep 16 01:03:52 1973\n\0.|asctime
[7.27.3.2 The ctime function] This function converts the calendar time pointed to by timer to local time in the form of a string. It is equivalent to asctime(localtime(timer)).|ctime
[7.27.3.3 The gmtime function] This function converts the calendar time pointed to by timer into a broken-down time, expressed as UTC.|gmtime
[7.27.3.4 The localtime function] This function converts the calendar time pointed to by timer into a broken-down time, expressed as local time.|localtime
[7.27.3.5 The strftime function] This function formats the broken-down time tm according to the format specification format and places the result in the character array s of size max.|strftime
[7.28 Unicode utilities <uchar.h>] This type is an unsigned integer type used for 16-bit Unicode characters.|char16_t
[7.28 Unicode utilities <uchar.h>] This type is an unsigned integer type used for 32-bit Unicode characters.|char32_t
[7.29.1 Introduction] This type is a complete object type other than an array type that can hold the conversion state information necessary to convert between sequences of multibyte characters and wide characters.|mbstate_t
[7.29.1 Introduction] This type is an integer type unchanged by default argument promotions that can hold any value corresponding to members of the extended character set, as well as at least one value that does not correspond to any member of the extended character set.|wint_t
[7.29.1 Introduction] This type is a struct type that holds the components of a calendar time, called the broken-down time.|tm|struct tm
[7.29.1 Introduction] This macro expands to a constant expression of type wint_t whose value does not correspond to any member of the extended character set. It is accepted (and returned) by several wide string functions to indicate end-of-file, that is, no more input from a stream.|WEOF
[7.29.2.1 The fwprintf function] This function writes output to the stream pointed to by stream, under control of the wide string pointed to by format that specifies how subsequent arguments are converted for output.|fwprintf
[7.29.2.2 The fwscanf function] This function reads input from the stream pointed to by stream, under control of the wide string pointed to by format that specifies the admissible input sequences and how they are to be converted for assignment, using subsequent arguments as pointers to the objects to receive the converted input.|fwscanf
[7.29.2.3 The swprintf function] This function is equivalent to fwprintf, except that the argument s specifies an array of wide characters into which the generated output is to be written, rather than written to a stream.|swprintf
[7.29.2.4 The swscanf function] This function is equivalent to fwscanf, except that the argument s specifies a wide string from which the input is to be obtained, rather than from a stream.|swscanf
[7.29.2.5 The vfwprintf function] This function is equivalent to fwprintf, with a variable argument list.|vfwprintf
[7.29.2.6 The vfwscanf function] This function is equivalent to fwscanf, with a variable argument list.|vfwscanf
[7.29.2.7 The vswprintf function] This function is equivalent to swprintf, with a variable argument list.|vswprintf
[7.29.2.8 The vswscanf function] This function is equivalent to swscanf, with a variable argument list.|vswscanf
[7.29.2.9 The vwprintf function] This function is equivalent to wprintf, with a variable argument list.|vwprintf
[7.29.2.10 The vwscanf function] This function is equivalent to wscanf, with a variable argument list.|vwscanf
[7.29.2.11 The wprintf function] This function is equivalent to fwprintf with the argument stdout interposed before its arguments.|wprintf
[7.29.2.12 The wscanf function] This function is equivalent to fwscanf with the argument stdin interposed before its arguments.|wscanf
[7.29.3.2 The fgetws function] This function reads at most one less than the number of wide characters specified by n from the stream pointed to by stream into the array pointed to by s.|fgetws
[7.29.3.3 The fputwc function] This function writes the wide character specified by c to the output stream pointed to by stream, at the position indicated by the associated file position indicator for the stream (if defined), and advances the indicator appropriately.|fputwc
[7.29.3.4 The fputws function] This function writes the wide string pointed to by s to the stream pointed to by stream.|fputws
[7.29.3.5 The fwide function] This function determines and may optionally set the orientation of the stream pointed to by stream.|fwide
[7.29.3.6 The getwc function] This function is equivalent to fgetwc, except that if it is implemented as a macro, it may evaluate stream more than once, so the argument should never be an expression with side effects.|getwc
[7.29.3.6 The getwc function] This function returns the next wide character from the input stream pointed to by stream, or WEOF.|getwc
[7.29.3.7 The getwchar function] This function is equivalent to getwc with the argument stdin.|getwchar
[7.29.3.7 The getwchar function] This function returns the next wide character from the input stream pointed to by stdin, or WEOF.|getwchar
[7.29.3.8 The putwc function] This function is equivalent to fputwc, except that if it is implemented as a macro, it may evaluate stream more than once, so that argument should never be an expression with side effects.|putwc
[7.29.3.9 The putwchar function] This function is equivalent to putwc with the second argument stdout.|putwchar
[7.29.3.10 The ungetwc function] This function pushes the wide character specified by c back onto the input stream pointed to by stream.|ungetwc
[7.29.3.10 The ungetwc function] If the ungetwc function is called too many times on the same stream without an intervening read or file positioning operation on that stream, the operation may do this.|fail
[7.29.4.2.1 The wcscpy function] This function copies the wide string pointed to by s2 (including the terminating null wide character) into the array pointed to by s1.|wcscpy
[7.29.4.2.2 The wcsncpy function] This function copies not more than n wide characters (those that follow a null wide character are not copied) from the array pointed to by s2 to the array pointed to by s1.|wcsncpy
[7.29.4.2.3 The wmemcpy function] This function copies n wide characters from the object pointed to by s2 to the object pointed to by s1 including any null wide characters.|wmemcpy
[7.29.4.3.1 The wcscat function] This function appends a copy of the wide string pointed to by s2 (including the terminating null wide character) to the end of the wide string pointed to by s1.|wcscat
[7.29.4.3.2 The wcsncat function] This function appends not more than n wide characters (a null wide character and those that follow it are not appended) from the array pointed to by s2 to the end of the wide string pointed to by s1.|wcsncat
[7.29.4.4.1 The wcscmp function] This function compares the wide string pointed to by s1 to the wide string pointed to by s2.|wcscmp
[7.29.4.4.2 The wcscoll function] This function compares the wide string pointed to by s1 to the wide string pointed to by s2, both interpreted as appropriate to the LC_COLLATE category of the current locale.|wcscoll
[7.29.4.4.3 The wcsncmp function] This function compares not more than n wide characters (those that follow a null wide character are not compared) from the array pointed to by s1 to the array pointed to by s2.|wcsncmp
[7.29.4.4.4 The wcsxfrm function] This function transforms the wide string pointed to by s2 and places the resulting wide string into the array pointed to by s1.|wcsxfrm
[7.29.4.4.5 The wmemcmp function] This function compares the first n wide characters of the object pointed to by s1 to the first n wide characters of the object pointed to by s2, including any null wide characters.|wmemcmp
[7.29.4.5.1 The wcschr function] This function locates the first occurrence of c in the wide string pointed to by s.|wcschr
[7.29.4.5.2 The wcscspn function] This function computes the length of the maximum initial segment of the wide string pointed to by s1 which consists entirely of wide characters not from the wide string pointed to by s2.|wcscspn
[7.29.4.5.3 The wcspbrk function] This function locates the first occurrence in the wide string pointed to by s1 of any wide character from the wide string pointed to by s2.|wcspbrk
[7.29.4.5.4 The wcsrchr function] This function locates the last occurrence of c in the wide string pointed to by s.|wcsrchr
[7.29.4.5.5 The wcsspn function] This function computes the length of the maximum initial segment of the wide string pointed to by s1 which consists entirely of wide characters from the wide string pointed to by s2.|wcsspn
[7.29.4.5.6 The wcsstr function] This function locates the first occurrence in the wide string pointed to by s1 of the sequence of wide characters (excluding the terminating null wide character) in the wide string pointed to by s2.|wcsstr
[7.29.4.5.7 The wcstok function] A sequence of calls to this function breaks the wide string pointed to by s1 into a sequence of tokens, each of which is delimited by a wide character from the wide string pointed to by s2.|wcstok
[7.29.4.5.8 The wmemchr function] This function locates the first occurrence of c in the initial n wide characters of the object pointed to by s, including any null wide characters.|wmemchr
[7.29.4.6.1 The wcslen function] This function computes the length of the wide string pointed to by s.|wcslen
[7.29.4.6.2 The wmemset function] This function copies the value of c into each of the first n wide characters of the object pointed to by s, including any null wide characters.|wmemset
[7.29.5.1 The wcsftime function] This function is equivalent to the strftime function, except that the argument s points to the initial element of an array of wide characters into which the generated output is to be placed.|wcsftime
[7.29.6.1.1 The btowc function] This function determines whether c constitutes a valid single-byte character in the initial shift state.|btowc
[7.29.6.1.2 The wctob function] This function determines whether c corresponds to a member of the extended character set whose multibyte character representation is a single byte when in the initial shift state.|wctob
[7.29.6.2.1 The mbsinit function] If the argument is not a null pointer, this function determines whether the referenced mbstate_t object describes an initial conversion state.|mbsinit
[7.29.6.3.1 The mbrlen function] This function is equivalent to the call: mbrtowc(NULL, s, n, ps != NULL ? ps : &internal) where internal is the mbstate_t object for the mbrlen function, except that the expression designated by ps is evaluated only once.|mbrlen
[7.29.6.3.2 The mbrtowc function] This function returns the first of the following that applies (given the current conversion state): 0 if the next n or fewer bytes complete the multibyte character that corresponds to the null wide character (which is the value stored).|mbrtowc
[7.29.6.3.3 The wcrtomb function] This function converts the wide character wc to its multibyte representation (including any shift sequences).|wcrtomb
[7.29.6.4.1 The mbsrtowcs function] This function converts a sequence of multibyte characters that begins in the conversion state described by the object pointed to by ps, from the array indirectly pointed to by src into a sequence of corresponding wide characters.|mbsrtowcs
[7.29.6.4.2 The wcsrtombs function] This function converts a sequence of wide characters from the array indirectly pointed to by src into a sequence of corresponding multibyte characters that begins in the conversion state described by the object pointed to by ps.|wcsrtombs
[7.30.1 Introduction] This type is a scalar type that can hold values which represent locale-specific character mappings.|wctrans_t
[7.30.1 Introduction] This type is a scalar type that can hold values which represent locale-specific character classifications.|wctype_t
[7.30.2.1.1 The iswalnum function] This function tests for any wide character for which iswalpha or iswdigit is true.|iswalnum
[7.30.2.1.2 The iswalpha function] This function tests for any wide character for which iswupper or iswlower is true, or any wide character that is one of a locale-specific set of alphabetic wide characters for which none of iswcntrl, iswdigit, iswpunct, or iswspace is true.|iswalpha
[7.30.2.1.3 The iswblank function] This function tests for any wide character that is a standard blank wide character or is one of a locale-specific set of wide characters for which iswspace is true and that is used to separate words within a line of text.|iswblank
[7.30.2.1.4 The iswcntrl function] This function tests for any control wide character.|iswcntrl
[7.30.2.1.5 The iswdigit function] This function tests for any wide character that corresponds to a decimal-digit character.|iswdigit
[7.30.2.1.6 The iswgraph function] This function tests for any wide character for which iswprint is true and iswspace is false.|iswgraph
[7.30.2.1.7 The iswlower function] This function tests for any wide character that corresponds to a lowercase letter or is one of a locale-specific set of wide characters for which none of iswcntrl, iswdigit, iswpunct, or iswspace is true.|iswlower
[7.30.2.1.8 The iswprint function] This function tests for any printing wide character.|iswprint
[7.30.2.1.9 The iswpunct function] This function tests for any printing wide character that is one of a locale-specific set of punctuation wide characters for which neither iswspace nor iswalnum is true.|iswpunct
[7.30.2.1.10 The iswspace function] This function tests for any wide character that corresponds to a locale-specific set of white-space wide characters for which none of iswalnum, iswgraph, or iswpunct is true.|iswspace
[7.30.2.1.11 The iswupper function] This function tests for any wide character that corresponds to an uppercase letter or is one of a locale-specific set of wide characters for which none of iswcntrl, iswdigit, iswpunct, or iswspace is true.|iswupper
[7.30.2.1.12 The iswxdigit function] This function tests for any wide character that corresponds to a hexadecimal-digit character.|iswxdigit
[7.30.2.2.1 The iswctype function] This function determines whether the wide character wc has the property described by desc.|iswctype
[7.30.2.2.2 The wctype function] This function constructs a value with type wctype_t that describes a class of wide characters identified by the string argument property.|wctype
[7.30.3.1.1 The towlower function] This function converts a wide uppercase letter to a corresponding wide lowercase letter.|towlower
[7.30.3.1.2 The towupper function] This function converts a wide lowercase letter to a corresponding wide uppercase letter.|towupper
[7.30.3.2.1 The towctrans function] This function maps the wide character wc using the mapping described by desc.|towctrans
[7.30.3.2.2 The wctrans function] This function constructs a value with type wctrans_t that describes a mapping between wide characters identified by the string argument property.|wctrans
[F.5 Binary-decimal conversion] If the minimum-width IEC 60559 extended format (64 bits of precision) is supported, this macro shall be at least 21.|DECIMAL_DIG
[F.5 Binary-decimal conversion] If IEC 60559 double (53 bits of precision) is the widest IEC 60559 format supported, then DECIMAL_DIG shall be at least this value.|17
[F.5 Binary-decimal conversion] If the minimum-width IEC 60559 extended format (64 bits of precision) is supported, this macro shall be at least 21.|DECIMAL_DIG
[F.5 Binary-decimal conversion] If IEC 60559 double (53 bits of precision) is the widest IEC 60559 format supported, then DECIMAL_DIG shall be at least this value.|21
[F.9.4 Constant arithmetic] The implementation shall honor floating-point exceptions raised by execution-time constant arithmetic wherever the state of the FENV_ACCESS pragma is this value.|on
[F.10 Mathematics <math.h>] If a function with one or more NaN arguments returns this result, the result should be the same as one of the NaN arguments (after possible type conversion), except perhaps for the sign.|NaN
[F.10.3.5 The ilogb functions] If the correct result of the ilogb function is outside the range of the return type, the numeric result is unspecified and this floating-point exception is raised.|invalid
[F.10.6.1 The ceil functions] The ceil functions may, but are not required to, raise this floating-point exception for finite non-integer arguments.|inexact
[F.10.6.2 The floor functions] The floor functions may, but are not required to, raise this floating-point exception for finite non-integer arguments.|inexact
[F.10.6.5 The lrint and llrint functions] If the rounded value returned by the lrint and llrint functions is outside the range of the return type, the numeric result is unspecified and this floating-point exception is raised.|invalid
[F.10.6.6 The round functions] The round functions may, but are not required to, raise this floating-point exception for finite non-integer numeric arguments.|inexact
[F.10.6.8 The trunc functions] The trunc functions may, but are not required to, raise this floating-point exception for finite non-integer arguments.|inexact
[G.2 Types] This type specifier is used to specify complex types.|_Complex
[G.2 Types] This type is used to specify imaginary types.|_Imaginary
[G.3 Conventions] A complex or imaginary value with at least one infinite part is regarded as this (even if its other part is a NaN).|infinity|inf
[G.4.2 Real and imaginary] When a value of imaginary type is converted to a real type other than _Bool, the result is this.|positive zero
[G.4.2 Real and imaginary] When a value of real type is converted to an imaginary type, the result is this value.|positive imaginary zero
[G.4.3 Imaginary and complex] When a value of imaginary type is converted to a complex type, the real part of the complex result value is this value and the imaginary part of the complex result value is determined by the conversion rules for the corresponding real types.|positive zero
[G.4.3 Imaginary and complex] When a value of complex type is converted to an imaginary type, this part of the complex value is discarded.|real
[G.5.1 Multiplicative operators] If one operand of a multiplicative operator has real type and the other operand has imaginary type, then the result has this type.|imaginary
[G.5.1 Multiplicative operators] If both operands of a multiplicative operator have imaginary type, then the result has this type.|real
[G.5.2 Additive operators] If both operands of the additive operators have imaginary type, then the result has this type.|imaginary
[H.2.4 Type conversions] This function is useful for doing silent wrapping to unsigned integer types.|fmod
[I. Common warnings] An example of this is when a new struct or union type appears in a function prototype.|common warning
[I. Common warnings] An example of this is when a block with initialization of an object that has automatic storage duration is jumped into.|common warning
[I. Common warnings] An example of this is when an implicit narrowing conversion is encountered, such as the assignment of a long int or a double to an int, or a pointer to void to a pointer to any type other than a character type.|common warning
[I. Common warnings] An example of this is when a hexadecimal floating constant cannot be represented exactly in its evaluation format.|common warning
[I. Common warnings] An example of this is when an integer character constant includes more than one character or a wide character constant includes more than one multibyte character.|common warning
[I. Common warnings] An example of this is when the characters /* are found in a comment.|common warning
[I. Common warnings] An example of this is when an ``unordered'' binary operator (not comma, &&, or \|\|) contains a side effect to an lvalue in one operand, and a side effect to, or an access to the value of, the identical lvalue in the other operand.|common warning
[I. Common warnings] An example of this is when a function is called but no prototype has been supplied.|common warning
[I. Common warnings] An example of this is when the arguments in a function call do not agree in number and type with those of the parameters in a function definition that is not a prototype.|common warning
[I. Common warnings] An example of this is when an object is defined but not used.|common warning
[I. Common warnings] An example of this is when a value is given to an object of an enumerated type other than by assignment of an enumeration constant that is a member of that type, or an enumeration object that has the same type, or the value of a function that returns the same enumerated type.|common warning
[I. Common warnings] An example of this is when an aggregate has a partly bracketed initialization.|common warning
[I. Common warnings] An example of this is when a statement cannot be reached.|common warning
[I. Common warnings] An example of this is when a statement with no apparent effect is encountered.|common warning
[I. Common warnings] An example of this is when a constant expression is used as the controlling expression of a selection statement.|common warning
[I. Common warnings] An example of this is when an incorrectly formed preprocessing group is encountered while skipping a preprocessing group.|common warning
[J.1 Unspecified behavior] An example of this behavior is when a fully expanded macro replacement list contains a function-like macro name as its last preprocessing token and the next preprocessing token from the source file is a (, and the fully expanded replacement of that macro ends with the name of the first macro and another (, whether that is considered a nested replacement.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is whether a call to the atexit function that does not happen before the exit function is called will succeed.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is whether a call to the at_quick_exit function that does not happen before the quick_exit function is called will succeed.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the manner and timing of static initialization.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the termination status returned to the hosted environment if the return type of main is not compatible with int.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the values of objects that are neither lock-free atomic objects nor of type volatile sig_atomic_t and the state of the floating-point environment, when the processing of the abstract machine is interrupted by receipt of a signal.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the behavior of the display device if a printing character is written when the active position is at the final position of a line.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the behavior of the display device if a backspace character is written when the active position is at the initial position of a line.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the behavior of the display device if a horizontal tab character is written when the active position is at or past the last defined horizontal tabulation position.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the behavior of the display device if a vertical tab character is written when the active position is at or past the last defined vertical tabulation position.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the value of padding bytes when storing values in structures or unions.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the values of bytes that correspond to union members other than the one last stored into.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the representation used when storing a value in an object that has more than one object representation for that value.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the values of any padding bits in integer representations.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is whether certain operators can generate negative zeros and whether a negative zero becomes a normal zero when stored in an object.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is whether two string literals result in distinct arrays.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the order in which subexpressions are evaluated and the order in which side effects take place, except as specified for the function-call (), &&, \|\|, ? :, and comma operators.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the order in which the function designator, arguments, and subexpressions within the arguments are evaluated in a function call.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the order of side effects among compound literal initialization list expressions.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the order in which the operands of an assignment operator are evaluated.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the alignment of the addressable storage unit allocated to hold a bit-field.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is whether a call to an inline function uses the inline definition or the external definition of the function.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the order in which any side effects occur among the initialization list expressions in an initializer.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the layout of storage for function parameters.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the order in which # and ## operations are evaluated during macro substitution.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the details of the value stored by the fgetpos function.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the details of the value returned by the ftell function for a text stream.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the order and contiguity of storage allocated by successive calls to the calloc, malloc, and realloc functions.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the amount of storage allocated by a successful call to the calloc, malloc, or realloc function when 0 bytes was requested.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is which of two elements that compare as equal is matched by the bsearch function.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the order of two elements that compare as equal in an array sorted by the qsort function.|unspecified behavior|unspecified
[J.1 Unspecified behavior] An example of this behavior is the encoding of the calendar time returned by the time function.|unspecified behavior|unspecified
[J.2 Undefined behavior] An example of this is when a nonempty source file does not end in a new-line character which is not immediately preceded by a backslash character or ends in a partial preprocessing token or comment.|undefined behavior
[J.2 Undefined behavior] An example of this is when an object is referred to outside of its lifetime.|undefined behavior
[J.2 Undefined behavior] An example of this is when a pointer is converted to other than an integer or pointer type.|undefined behavior
[J.2 Undefined behavior] An example of this is when an expression is shifted by a negative number or by an amount greater than or equal to the width of the promoted expression.|undefined behavior
[J.2 Undefined behavior] An example of this is when a file with the same name as one of the standard headers, not provided as part of the implementation, is placed in any of the standard places that are searched for included source files.|undefined behavior
[J.2 Undefined behavior] An example of this is when a macro definition of errno is suppressed in order to access an actual object, or the program defines an identifier with the name errno.|undefined behavior
[J.2 Undefined behavior] An example of this is when a signal occurs as the result of calling the abort or raise function, and the signal handler calls the raise function.|undefined behavior
[J.2 Undefined behavior] An example of this is when the signal function is used in a multi-threaded program.|undefined behavior
[J.2 Undefined behavior] An example of this is when an output operation on an update stream is followed by an input operation without an intervening call to the fflush function or a file positioning function, or an input operation on an update stream is followed by an output operation with an intervening call to a file positioning function.|undefined behavior
[J.2 Undefined behavior] An example of this is when a partial element read by a call to the fread function is used.|undefined behavior
[J.2 Undefined behavior] An example of this is when the fseek function is called for a text stream with a nonzero offset and either the offset was not returned by a previous successful call to the ftell function on a stream associated with the same file or whence is not SEEK_SET.|undefined behavior
[J.2 Undefined behavior] An example of this is when the fsetpos function is called to set a position that was not returned by a previous successful call to the fgetpos function on a stream associated with the same file.|undefined behavior
[J.2 Undefined behavior] An example of this is when a signal is raised while the quick_exit function is executing.|undefined behavior
[J.2 Undefined behavior] An example of this is when a complex argument is supplied for a generic parameter of a type-generic macro that has no corresponding complex function.|undefined behavior
[J.3 Implementation-defined behavior] A conforming implementation is required to do this for its choice of behavior for implementation-defined behavior.|document
[J.3 Implementation-defined behavior] A conforming implementation is required to document its choice of behavior for this kind of behavior.|implementation-defined
[J.3 Implementation-defined behavior] An example of this behavior is the result of converting a pointer to an integer or vice versa.|implementation-defined behavior|implementation-defined
[J.3 Implementation-defined behavior] An example of this behavior is the size of the result of subtracting two pointers to elements of the same array.|implementation-defined behavior|implementation-defined
[J.3 Implementation-defined behavior] An example of this behavior is the extent to which suggestions made by using the register storage-class specifier are effective.|implementation-defined behavior|implementation-defined
[J.3 Implementation-defined behavior] An example of this behavior is the extent to which suggestions made by using the inline function specifier are effective.|implementation-defined behavior|implementation-defined
[J.3 Implementation-defined behavior] An example of this behavior is what constitutes an access to an object that has volatile-qualified type.|implementation-defined behavior|implementation-defined
[J.3 Implementation-defined behavior] An example of this behavior is whether the calloc, malloc, and realloc functions return a null pointer or a pointer to an allocated object when the size requested is zero.|implementation-defined behavior|implementation-defined
[J.3 Implementation-defined behavior] An example of this behavior is whether or not the strtod, strtof, strtold, wcstod, wcstof, or wcstold function sets errno to ERANGE when underflow occurs.|implementation-defined behavior|implementation-defined
[J.3 Implementation-defined behavior] An example of this behavior is the value to which the macro errno is set by the fgetpos, fsetpos, or ftell functions on failure.|implementation-defined behavior|implementation-defined
[J.3 Implementation-defined behavior] An example of this behavior is the number of bits in a byte.|implementation-defined behavior|implementation-defined
[J.3.12 Library functions] An example of this behavior is whether open streams with unwritten buffered data are flushed, open streams are closed, or temporary files are removed when the abort or _Exit function is called.|implementation-defined behavior|implementation-defined
[J.4 Locale-specific behavior] An example of this behavior is the presence, meaning, and representation of additional multibyte characters in the execution character set beyond the basic character set.|locale-specific behavior|locale-specific
[J.4 Locale-specific behavior] An example of this behavior is the direction of writing of successive printing characters.|locale-specific behavior|locale-specific
[J.4 Locale-specific behavior] An example of this behavior is the decimal-point character.|locale-specific behavior|locale-specific
[J.4 Locale-specific behavior] An example of this behavior is the sets of characters tested for by the isalpha, isblank, islower, ispunct, isspace, isupper, iswalpha, iswblank, iswlower, iswpunct, iswspace, or iswupper functions.|locale-specific behavior|locale-specific
[J.4 Locale-specific behavior] An example of this behavior is additional subject sequences accepted by the numeric conversion functions.|locale-specific behavior|locale-specific
[J.4 Locale-specific behavior] An example of this behavior is the collation sequence of the execution character set.|locale-specific behavior|locale-specific
[J.4 Locale-specific behavior] An example of this behavior is the formats for time and date.|locale-specific behavior|locale-specific
[J.5.5 Writable string literals] An example of this is modifiable/writable string-literals being allowed.|common-extension|extension
[J.5.6 Other arithmetic types] An example of this is defining additional arithmetic types such as __int128 or double double.|common-extension|extension
[J.5.7 Function pointer casts] An example of this is casting a pointer to an object or to void to a pointer to a function, allowing data to be invoked as a function.|common-extension|extension
[J.5.7 Function pointer casts] An example of this is casting a pointer to a function to a pointer to an object or to void, allowing a function to be inspected or modified (for example, by a debugger).|common-extension|extension
[J.5.10 The asm keyword] This keyword may be used to insert assembly language directly into the translator output.|asm{This is a common-extension and not a standard requirement.}
[J.5.9 The fortran keyword] This function specifier may be used in a function declaration to indicate that calls suitable for FORTRAN should be generated, or that a different representation for the external name is to be generated.|fortran{This is a common-extension, not a standard requirement.}
[J.5.13 Floating-point status flags] If any floating-point status flags are set on normal termination after all calls to functions registered by this function have been made, the implementation writes some diagnostics indicating the fact to the stderr stream, if it is still open.|atexit
[K.3.1.4 Runtime-constraint violations] Implementations shall verify that these for a function ending with _s are not violated by the program.|run-time constraints
[K.3.1.4 Runtime-constraint violations] If the runtime-constraint handler does return, the library function whose runtime-constraint was violated shall return this as given by the returns section in the function's specification.|indication of failure
[L.3 Requirements] If the program performs a trap, the implementation is permitted to invoke this.|runtime-constraint handler{Such semantics are implementation-defined.}
