- mbstate_t * restrict ps);
-
-
-
-
-[<a name="p497" href="#p497">page 497</a>] (<a href="#Contents">Contents</a>)
-
- errno_t wcsrtombs_s(size_t * restrict retval,
- char * restrict dst, rsize_t dstmax,
- const wchar_t ** restrict src, rsize_t len,
- mbstate_t * restrict ps);
-<a name="B.28" href="#B.28"><b>B.28 Wide character classification and mapping utilities <wctype.h></b></a>
- wint_t wctrans_t wctype_t WEOF
- int iswalnum(wint_t wc);
- int iswalpha(wint_t wc);
- int iswblank(wint_t wc);
- int iswcntrl(wint_t wc);
- int iswdigit(wint_t wc);
- int iswgraph(wint_t wc);
- int iswlower(wint_t wc);
- int iswprint(wint_t wc);
- int iswpunct(wint_t wc);
- int iswspace(wint_t wc);
- int iswupper(wint_t wc);
- int iswxdigit(wint_t wc);
- int iswctype(wint_t wc, wctype_t desc);
- wctype_t wctype(const char *property);
- wint_t towlower(wint_t wc);
- wint_t towupper(wint_t wc);
- wint_t towctrans(wint_t wc, wctrans_t desc);
- wctrans_t wctrans(const char *property);
-
-
-
-
-[<a name="p498" href="#p498">page 498</a>] (<a href="#Contents">Contents</a>)
-
-<a name="C" href="#C"><b> Annex C</b></a>
- (informative)
- Sequence points
-1 The following are the sequence points described in <a href="#5.1.2.3">5.1.2.3</a>:
- -- Between the evaluations of the function designator and actual arguments in a function
- call and the actual call. (<a href="#6.5.2.2">6.5.2.2</a>).
- -- Between the evaluations of the first and second operands of the following operators:
- logical AND && (<a href="#6.5.13">6.5.13</a>); logical OR || (<a href="#6.5.14">6.5.14</a>); comma , (<a href="#6.5.17">6.5.17</a>). *
- -- Between the evaluations of the first operand of the conditional ? : operator and
- whichever of the second and third operands is evaluated (<a href="#6.5.15">6.5.15</a>).
- -- The end of a full declarator: declarators (<a href="#6.7.6">6.7.6</a>);
- -- Between the evaluation of a full expression and the next full expression to be
- evaluated. The following are full expressions: an initializer that is not part of a
- compound literal (<a href="#6.7.9">6.7.9</a>); the expression in an expression statement (<a href="#6.8.3">6.8.3</a>); the
- controlling expression of a selection statement (if or switch) (<a href="#6.8.4">6.8.4</a>); the
- controlling expression of a while or do statement (<a href="#6.8.5">6.8.5</a>); each of the (optional)
- expressions of a for statement (<a href="#6.8.5.3">6.8.5.3</a>); the (optional) expression in a return
- statement (<a href="#6.8.6.4">6.8.6.4</a>).
- -- Immediately before a library function returns (<a href="#7.1.4">7.1.4</a>).
- -- After the actions associated with each formatted input/output function conversion
- specifier (<a href="#7.21.6">7.21.6</a>, <a href="#7.28.2">7.28.2</a>).
- -- Immediately before and immediately after each call to a comparison function, and
- also between any call to a comparison function and any movement of the objects
- passed as arguments to that call (<a href="#7.22.5">7.22.5</a>).
-
-
-
-
-[<a name="p499" href="#p499">page 499</a>] (<a href="#Contents">Contents</a>)
-
-<a name="D" href="#D"><b> Annex D</b></a>
- (normative)
- Universal character names for identifiers
-1 This clause lists the hexadecimal code values that are valid in universal character names
- in identifiers.
-<a name="D.1" href="#D.1"><b> D.1 Ranges of characters allowed</b></a>
-1 00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6,
- 00D8-00F6, 00F8-00FF
-2 0100-167F, 1681-180D, 180F-1FFF
-3 200B-200D, 202A-202E, 203F-2040, 2054, 2060-206F
-4 2070-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF
-5 3004-3007, 3021-302F, 3031-303F
-6 3040-D7FF
-7 F900-FD3D, FD40-FDCF, FDF0-FE44, FE47-FFFD
-8 10000-1FFFD, 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD,
- 60000-6FFFD, 70000-7FFFD, 80000-8FFFD, 90000-9FFFD, A0000-AFFFD,
- B0000-BFFFD, C0000-CFFFD, D0000-DFFFD, E0000-EFFFD
-<a name="D.2" href="#D.2"><b> D.2 Ranges of characters disallowed initially</b></a>
-1 0300-036F, 1DC0-1DFF, 20D0-20FF, FE20-FE2F
-
-
-
-
-[<a name="p500" href="#p500">page 500</a>] (<a href="#Contents">Contents</a>)
-
-<a name="E" href="#E"><b> Annex E</b></a>
- (informative)
- Implementation limits
-1 The contents of the header <a href="#7.10"><limits.h></a> are given below, in alphabetical order. The
- minimum magnitudes shown shall be replaced by implementation-defined magnitudes
- with the same sign. The values shall all be constant expressions suitable for use in #if
- preprocessing directives. The components are described further in <a href="#5.2.4.2.1">5.2.4.2.1</a>.
- #define CHAR_BIT 8
- #define CHAR_MAX UCHAR_MAX or SCHAR_MAX
- #define CHAR_MIN 0 or SCHAR_MIN
- #define INT_MAX +32767
- #define INT_MIN -32767
- #define LONG_MAX +2147483647
- #define LONG_MIN -2147483647
- #define LLONG_MAX +9223372036854775807
- #define LLONG_MIN -9223372036854775807
- #define MB_LEN_MAX 1
- #define SCHAR_MAX +127
- #define SCHAR_MIN -127
- #define SHRT_MAX +32767
- #define SHRT_MIN -32767
- #define UCHAR_MAX 255
- #define USHRT_MAX 65535
- #define UINT_MAX 65535
- #define ULONG_MAX 4294967295
- #define ULLONG_MAX 18446744073709551615
-2 The contents of the header <a href="#7.7"><float.h></a> are given below. All integer values, except
- FLT_ROUNDS, shall be constant expressions suitable for use in #if preprocessing
- directives; all floating values shall be constant expressions. The components are
- described further in <a href="#5.2.4.2.2">5.2.4.2.2</a>.
-3 The values given in the following list shall be replaced by implementation-defined
- expressions:
- #define FLT_EVAL_METHOD
- #define FLT_ROUNDS
-4 The values given in the following list shall be replaced by implementation-defined
- constant expressions that are greater or equal in magnitude (absolute value) to those
- shown, with the same sign:
-[<a name="p501" href="#p501">page 501</a>] (<a href="#Contents">Contents</a>)
-
- #define DLB_DECIMAL_DIG 10
- #define DBL_DIG 10
- #define DBL_MANT_DIG
- #define DBL_MAX_10_EXP +37
- #define DBL_MAX_EXP
- #define DBL_MIN_10_EXP -37
- #define DBL_MIN_EXP
- #define DECIMAL_DIG 10
- #define FLT_DECIMAL_DIG 6
- #define FLT_DIG 6
- #define FLT_MANT_DIG
- #define FLT_MAX_10_EXP +37
- #define FLT_MAX_EXP
- #define FLT_MIN_10_EXP -37
- #define FLT_MIN_EXP
- #define FLT_RADIX 2
- #define LDLB_DECIMAL_DIG 10
- #define LDBL_DIG 10
- #define LDBL_MANT_DIG
- #define LDBL_MAX_10_EXP +37
- #define LDBL_MAX_EXP
- #define LDBL_MIN_10_EXP -37
- #define LDBL_MIN_EXP
-5 The values given in the following list shall be replaced by implementation-defined
- constant expressions with values that are greater than or equal to those shown:
- #define DBL_MAX 1E+37
- #define FLT_MAX 1E+37
- #define LDBL_MAX 1E+37
-6 The values given in the following list shall be replaced by implementation-defined
- constant expressions with (positive) values that are less than or equal to those shown:
- #define DBL_EPSILON 1E-9
- #define DBL_MIN 1E-37
- #define FLT_EPSILON 1E-5
- #define FLT_MIN 1E-37
- #define LDBL_EPSILON 1E-9
- #define LDBL_MIN 1E-37
-
-
-
-
-[<a name="p502" href="#p502">page 502</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F" href="#F"><b> Annex F</b></a>
- (normative)
- IEC 60559 floating-point arithmetic
-<a name="F.1" href="#F.1"><b> F.1 Introduction</b></a>
-1 This annex specifies C language support for the IEC 60559 floating-point standard. The
- IEC 60559 floating-point standard is specifically Binary floating-point arithmetic for
- microprocessor systems, second edition (IEC 60559:1989), previously designated
- IEC 559:1989 and as IEEE Standard for Binary Floating-Point Arithmetic
- (ANSI/IEEE 754-1985). IEEE Standard for Radix-Independent Floating-Point
- Arithmetic (ANSI/IEEE 854-1987) generalizes the binary standard to remove
- dependencies on radix and word length. IEC 60559 generally refers to the floating-point
- standard, as in IEC 60559 operation, IEC 60559 format, etc. An implementation that
- defines __STDC_IEC_559__ shall conform to the specifications in this annex.343)
- Where a binding between the C language and IEC 60559 is indicated, the
- IEC 60559-specified behavior is adopted by reference, unless stated otherwise. Since
- negative and positive infinity are representable in IEC 60559 formats, all real numbers lie
- within the range of representable values.
-<a name="F.2" href="#F.2"><b> F.2 Types</b></a>
-1 The C floating types match the IEC 60559 formats as follows:
- -- The float type matches the IEC 60559 single format.
- -- The double type matches the IEC 60559 double format.
- -- The long double type matches an IEC 60559 extended format,344) else a
- non-IEC 60559 extended format, else the IEC 60559 double format.
- Any non-IEC 60559 extended format used for the long double type shall have more
- precision than IEC 60559 double and at least the range of IEC 60559 double.345)
-
-
-
-
- 343) Implementations that do not define __STDC_IEC_559__ are not required to conform to these
- specifications.
- 344) ''Extended'' is IEC 60559's double-extended data format. Extended refers to both the common 80-bit
- and quadruple 128-bit IEC 60559 formats.
- 345) A non-IEC 60559 long double type is required to provide infinity and NaNs, as its values include
- all double values.
-
-[<a name="p503" href="#p503">page 503</a>] (<a href="#Contents">Contents</a>)
-
- Recommended practice
-2 The long double type should match an IEC 60559 extended format.
-<a name="F.2.1" href="#F.2.1"><b> F.2.1 Infinities, signed zeros, and NaNs</b></a>
-1 This specification does not define the behavior of signaling NaNs.346) It generally uses
- the term NaN to denote quiet NaNs. The NAN and INFINITY macros and the nan
- functions in <a href="#7.12"><math.h></a> provide designations for IEC 60559 NaNs and infinities.
-<a name="F.3" href="#F.3"><b> F.3 Operators and functions</b></a>
-1 C operators and functions provide IEC 60559 required and recommended facilities as
- listed below.
- -- The +, -, *, and / operators provide the IEC 60559 add, subtract, multiply, and
- divide operations.
- -- The sqrt functions in <a href="#7.12"><math.h></a> provide the IEC 60559 square root operation.
- -- The remainder functions in <a href="#7.12"><math.h></a> provide the IEC 60559 remainder
- operation. The remquo functions in <a href="#7.12"><math.h></a> provide the same operation but
- with additional information.
- -- The rint functions in <a href="#7.12"><math.h></a> provide the IEC 60559 operation that rounds a
- floating-point number to an integer value (in the same precision). The nearbyint
- functions in <a href="#7.12"><math.h></a> provide the nearbyinteger function recommended in the
- Appendix to ANSI/IEEE 854.
- -- The conversions for floating types provide the IEC 60559 conversions between
- floating-point precisions.
- -- The conversions from integer to floating types provide the IEC 60559 conversions
- from integer to floating point.
- -- The conversions from floating to integer types provide IEC 60559-like conversions
- but always round toward zero.
- -- The lrint and llrint functions in <a href="#7.12"><math.h></a> provide the IEC 60559
- conversions, which honor the directed rounding mode, from floating point to the
- long int and long long int integer formats. The lrint and llrint
- functions can be used to implement IEC 60559 conversions from floating to other
- integer formats.
- -- The translation time conversion of floating constants and the strtod, strtof,
- strtold, fprintf, fscanf, and related library functions in <a href="#7.22"><stdlib.h></a>,
-
-
- 346) Since NaNs created by IEC 60559 operations are always quiet, quiet NaNs (along with infinities) are
- sufficient for closure of the arithmetic.
-
-[<a name="p504" href="#p504">page 504</a>] (<a href="#Contents">Contents</a>)
-
- <a href="#7.21"><stdio.h></a>, and <a href="#7.28"><wchar.h></a> provide IEC 60559 binary-decimal conversions. The
- strtold function in <a href="#7.22"><stdlib.h></a> provides the conv function recommended in the
- Appendix to ANSI/IEEE 854.
--- The relational and equality operators provide IEC 60559 comparisons. IEC 60559
- identifies a need for additional comparison predicates to facilitate writing code that
- accounts for NaNs. The comparison macros (isgreater, isgreaterequal,
- isless, islessequal, islessgreater, and isunordered) in <a href="#7.12"><math.h></a>
- supplement the language operators to address this need. The islessgreater and
- isunordered macros provide respectively a quiet version of the <> predicate and
- the unordered predicate recommended in the Appendix to IEC 60559.
--- The feclearexcept, feraiseexcept, and fetestexcept functions in
- <a href="#7.6"><fenv.h></a> provide the facility to test and alter the IEC 60559 floating-point
- exception status flags. The fegetexceptflag and fesetexceptflag
- functions in <a href="#7.6"><fenv.h></a> provide the facility to save and restore all five status flags at
- one time. These functions are used in conjunction with the type fexcept_t and the
- floating-point exception macros (FE_INEXACT, FE_DIVBYZERO,
- FE_UNDERFLOW, FE_OVERFLOW, FE_INVALID) also in <a href="#7.6"><fenv.h></a>.
--- The fegetround and fesetround functions in <a href="#7.6"><fenv.h></a> provide the facility
- to select among the IEC 60559 directed rounding modes represented by the rounding
- direction macros in <a href="#7.6"><fenv.h></a> (FE_TONEAREST, FE_UPWARD, FE_DOWNWARD,
- FE_TOWARDZERO) and the values 0, 1, 2, and 3 of FLT_ROUNDS are the
- IEC 60559 directed rounding modes.
--- The fegetenv, feholdexcept, fesetenv, and feupdateenv functions in
- <a href="#7.6"><fenv.h></a> provide a facility to manage the floating-point environment, comprising
- the IEC 60559 status flags and control modes.
--- The copysign functions in <a href="#7.12"><math.h></a> provide the copysign function
- recommended in the Appendix to IEC 60559.
--- The fabs functions in <a href="#7.12"><math.h></a> provide the abs function recommended in the
- Appendix to IEC 60559.
--- The unary minus (-) operator provides the unary minus (-) operation recommended
- in the Appendix to IEC 60559.
--- The scalbn and scalbln functions in <a href="#7.12"><math.h></a> provide the scalb function
- recommended in the Appendix to IEC 60559.
--- The logb functions in <a href="#7.12"><math.h></a> provide the logb function recommended in the
- Appendix to IEC 60559, but following the newer specifications in ANSI/IEEE 854.
--- The nextafter and nexttoward functions in <a href="#7.12"><math.h></a> provide the nextafter
- function recommended in the Appendix to IEC 60559 (but with a minor change to
-
-[<a name="p505" href="#p505">page 505</a>] (<a href="#Contents">Contents</a>)
-
- better handle signed zeros).
- -- The isfinite macro in <a href="#7.12"><math.h></a> provides the finite function recommended in
- the Appendix to IEC 60559.
- -- The isnan macro in <a href="#7.12"><math.h></a> provides the isnan function recommended in the
- Appendix to IEC 60559.
- -- The signbit macro and the fpclassify macro in <a href="#7.12"><math.h></a>, used in
- conjunction with the number classification macros (FP_NAN, FP_INFINITE,
- FP_NORMAL, FP_SUBNORMAL, FP_ZERO), provide the facility of the class
- function recommended in the Appendix to IEC 60559 (except that the classification
- macros defined in <a href="#7.12.3">7.12.3</a> do not distinguish signaling from quiet NaNs).
-<a name="F.4" href="#F.4"><b> F.4 Floating to integer conversion</b></a>
-1 If the integer type is _Bool, <a href="#6.3.1.2">6.3.1.2</a> applies and no floating-point exceptions are raised
- (even for NaN). Otherwise, if the floating value is infinite or NaN or if the integral part
- of the floating value exceeds the range of the integer type, then the ''invalid'' floating-
- point exception is raised and the resulting value is unspecified. Otherwise, the resulting
- value is determined by <a href="#6.3.1.4">6.3.1.4</a>. Conversion of an integral floating value that does not
- exceed the range of the integer type raises no floating-point exceptions; whether
- conversion of a non-integral floating value raises the ''inexact'' floating-point exception is
- unspecified.347)
-<a name="F.5" href="#F.5"><b> F.5 Binary-decimal conversion</b></a>
-1 Conversion from the widest supported IEC 60559 format to decimal with
- DECIMAL_DIG digits and back is the identity function.348)
-2 Conversions involving IEC 60559 formats follow all pertinent recommended practice. In
- particular, conversion between any supported IEC 60559 format and decimal with
- DECIMAL_DIG or fewer significant digits is correctly rounded (honoring the current
- rounding mode), which assures that conversion from the widest supported IEC 60559
- format to decimal with DECIMAL_DIG digits and back is the identity function.
-
-
-
- 347) ANSI/IEEE 854, but not IEC 60559 (ANSI/IEEE 754), directly specifies that floating-to-integer
- conversions raise the ''inexact'' floating-point exception for non-integer in-range values. In those
- cases where it matters, library functions can be used to effect such conversions with or without raising
- the ''inexact'' floating-point exception. See rint, lrint, llrint, and nearbyint in
- <a href="#7.12"><math.h></a>.
- 348) If the minimum-width IEC 60559 extended format (64 bits of precision) is supported,
- DECIMAL_DIG shall be at least 21. If IEC 60559 double (53 bits of precision) is the widest
- IEC 60559 format supported, then DECIMAL_DIG shall be at least 17. (By contrast, LDBL_DIG and
- DBL_DIG are 18 and 15, respectively, for these formats.)
-
-[<a name="p506" href="#p506">page 506</a>] (<a href="#Contents">Contents</a>)
-
-3 Functions such as strtod that convert character sequences to floating types honor the
- rounding direction. Hence, if the rounding direction might be upward or downward, the
- implementation cannot convert a minus-signed sequence by negating the converted
- unsigned sequence.
-<a name="F.6" href="#F.6"><b> F.6 The return statement</b></a>
- If the return expression is evaluated in a floating-point format different from the return
- type, the expression is converted as if by assignment349) to the return type of the function
- and the resulting value is returned to the caller.
-<a name="F.7" href="#F.7"><b> F.7 Contracted expressions</b></a>
-1 A contracted expression is correctly rounded (once) and treats infinities, NaNs, signed
- zeros, subnormals, and the rounding directions in a manner consistent with the basic
- arithmetic operations covered by IEC 60559.
- Recommended practice
-2 A contracted expression should raise floating-point exceptions in a manner generally
- consistent with the basic arithmetic operations. *
-<a name="F.8" href="#F.8"><b> F.8 Floating-point environment</b></a>
-1 The floating-point environment defined in <a href="#7.6"><fenv.h></a> includes the IEC 60559 floating-
- point exception status flags and directed-rounding control modes. It includes also
- IEC 60559 dynamic rounding precision and trap enablement modes, if the
- implementation supports them.350)
-<a name="F.8.1" href="#F.8.1"><b> F.8.1 Environment management</b></a>
-1 IEC 60559 requires that floating-point operations implicitly raise floating-point exception
- status flags, and that rounding control modes can be set explicitly to affect result values of
- floating-point operations. When the state for the FENV_ACCESS pragma (defined in
- <a href="#7.6"><fenv.h></a>) is ''on'', these changes to the floating-point state are treated as side effects
- which respect sequence points.351)
-
-
-
-
- 349) Assignment removes any extra range and precision.
- 350) This specification does not require dynamic rounding precision nor trap enablement modes.
- 351) If the state for the FENV_ACCESS pragma is ''off'', the implementation is free to assume the floating-
- point control modes will be the default ones and the floating-point status flags will not be tested,
- which allows certain optimizations (see <a href="#F.9">F.9</a>).
-
-[<a name="p507" href="#p507">page 507</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.8.2" href="#F.8.2"><b> F.8.2 Translation</b></a>
-1 During translation the IEC 60559 default modes are in effect:
- -- The rounding direction mode is rounding to nearest.
- -- The rounding precision mode (if supported) is set so that results are not shortened.
- -- Trapping or stopping (if supported) is disabled on all floating-point exceptions.
- Recommended practice
-2 The implementation should produce a diagnostic message for each translation-time
- floating-point exception, other than ''inexact'';352) the implementation should then
- proceed with the translation of the program.
-<a name="F.8.3" href="#F.8.3"><b> F.8.3 Execution</b></a>
-1 At program startup the floating-point environment is initialized as prescribed by
- IEC 60559:
- -- All floating-point exception status flags are cleared.
- -- The rounding direction mode is rounding to nearest.
- -- The dynamic rounding precision mode (if supported) is set so that results are not
- shortened.
- -- Trapping or stopping (if supported) is disabled on all floating-point exceptions.
-<a name="F.8.4" href="#F.8.4"><b> F.8.4 Constant expressions</b></a>
-1 An arithmetic constant expression of floating type, other than one in an initializer for an
- object that has static or thread storage duration, is evaluated (as if) during execution; thus,
- it is affected by any operative floating-point control modes and raises floating-point
- exceptions as required by IEC 60559 (provided the state for the FENV_ACCESS pragma
- is ''on'').353)
-2 EXAMPLE
-
-
-
- 352) As floating constants are converted to appropriate internal representations at translation time, their
- conversion is subject to default rounding modes and raises no execution-time floating-point exceptions
- (even where the state of the FENV_ACCESS pragma is ''on''). Library functions, for example
- strtod, provide execution-time conversion of numeric strings.
- 353) Where the state for the FENV_ACCESS pragma is ''on'', results of inexact expressions like 1.0/3.0
- are affected by rounding modes set at execution time, and expressions such as 0.0/0.0 and
- 1.0/0.0 generate execution-time floating-point exceptions. The programmer can achieve the
- efficiency of translation-time evaluation through static initialization, such as
- const static double one_third = 1.0/3.0;
-
-
-[<a name="p508" href="#p508">page 508</a>] (<a href="#Contents">Contents</a>)
-
- #include <a href="#7.6"><fenv.h></a>
- #pragma STDC FENV_ACCESS ON
- void f(void)
- {
- float w[] = { 0.0/0.0 }; // raises an exception
- static float x = 0.0/0.0; // does not raise an exception
- float y = 0.0/0.0; // raises an exception
- double z = 0.0/0.0; // raises an exception
- /* ... */
- }
-3 For the static initialization, the division is done at translation time, raising no (execution-time) floating-
- point exceptions. On the other hand, for the three automatic initializations the invalid division occurs at
- execution time.
-
-<a name="F.8.5" href="#F.8.5"><b> F.8.5 Initialization</b></a>
-1 All computation for automatic initialization is done (as if) at execution time; thus, it is
- affected by any operative modes and raises floating-point exceptions as required by
- IEC 60559 (provided the state for the FENV_ACCESS pragma is ''on''). All computation
- for initialization of objects that have static or thread storage duration is done (as if) at
- translation time.
-2 EXAMPLE
- #include <a href="#7.6"><fenv.h></a>
- #pragma STDC FENV_ACCESS ON
- void f(void)
- {
- float u[] = { 1.1e75 }; // raises exceptions
- static float v = 1.1e75; // does not raise exceptions
- float w = 1.1e75; // raises exceptions
- double x = 1.1e75; // may raise exceptions
- float y = 1.1e75f; // may raise exceptions
- long double z = 1.1e75; // does not raise exceptions
- /* ... */
- }
-3 The static initialization of v raises no (execution-time) floating-point exceptions because its computation is
- done at translation time. The automatic initialization of u and w require an execution-time conversion to
- float of the wider value 1.1e75, which raises floating-point exceptions. The automatic initializations
- of x and y entail execution-time conversion; however, in some expression evaluation methods, the
- conversions is not to a narrower format, in which case no floating-point exception is raised.354) The
- automatic initialization of z entails execution-time conversion, but not to a narrower format, so no floating-
- point exception is raised. Note that the conversions of the floating constants 1.1e75 and 1.1e75f to
-
-
-
- 354) Use of float_t and double_t variables increases the likelihood of translation-time computation.
- For example, the automatic initialization
- double_t x = 1.1e75;
- could be done at translation time, regardless of the expression evaluation method.
-
-[<a name="p509" href="#p509">page 509</a>] (<a href="#Contents">Contents</a>)
-
- their internal representations occur at translation time in all cases.
-
-<a name="F.8.6" href="#F.8.6"><b> F.8.6 Changing the environment</b></a>
-1 Operations defined in <a href="#6.5">6.5</a> and functions and macros defined for the standard libraries
- change floating-point status flags and control modes just as indicated by their
- specifications (including conformance to IEC 60559). They do not change flags or modes
- (so as to be detectable by the user) in any other cases.
-2 If the argument to the feraiseexcept function in <a href="#7.6"><fenv.h></a> represents IEC 60559
- valid coincident floating-point exceptions for atomic operations (namely ''overflow'' and
- ''inexact'', or ''underflow'' and ''inexact''), then ''overflow'' or ''underflow'' is raised
- before ''inexact''.
-<a name="F.9" href="#F.9"><b> F.9 Optimization</b></a>
-1 This section identifies code transformations that might subvert IEC 60559-specified
- behavior, and others that do not.
-<a name="F.9.1" href="#F.9.1"><b> F.9.1 Global transformations</b></a>
-1 Floating-point arithmetic operations and external function calls may entail side effects
- which optimization shall honor, at least where the state of the FENV_ACCESS pragma is
- ''on''. The flags and modes in the floating-point environment may be regarded as global
- variables; floating-point operations (+, *, etc.) implicitly read the modes and write the
- flags.
-2 Concern about side effects may inhibit code motion and removal of seemingly useless
- code. For example, in
- #include <a href="#7.6"><fenv.h></a>
- #pragma STDC FENV_ACCESS ON
- void f(double x)
- {
- /* ... */
- for (i = 0; i < n; i++) x + 1;
- /* ... */
- }
- x + 1 might raise floating-point exceptions, so cannot be removed. And since the loop
- body might not execute (maybe 0 >= n), x + 1 cannot be moved out of the loop. (Of
- course these optimizations are valid if the implementation can rule out the nettlesome
- cases.)
-3 This specification does not require support for trap handlers that maintain information
- about the order or count of floating-point exceptions. Therefore, between function calls,
- floating-point exceptions need not be precise: the actual order and number of occurrences
- of floating-point exceptions (> 1) may vary from what the source code expresses. Thus,
-[<a name="p510" href="#p510">page 510</a>] (<a href="#Contents">Contents</a>)
-
- the preceding loop could be treated as
- if (0 < n) x + 1;
-<a name="F.9.2" href="#F.9.2"><b> F.9.2 Expression transformations</b></a>
-1 x/2 (<->) x x 0.5 Although similar transformations involving inexact constants
- generally do not yield numerically equivalent expressions, if the
- constants are exact then such transformations can be made on
- IEC 60559 machines and others that round perfectly.
- 1 x x and x/1 (->) x The expressions 1 x x, x/1, and x are equivalent (on IEC 60559
- machines, among others).355)
- x/x (->) 1.0 The expressions x/x and 1.0 are not equivalent if x can be zero,
- infinite, or NaN.
- x - y (<->) x + (-y) The expressions x - y, x + (-y), and (-y) + x are equivalent (on
- IEC 60559 machines, among others).
- x - y (<->) -(y - x) The expressions x - y and -(y - x) are not equivalent because 1 - 1
- is +0 but -(1 - 1) is -0 (in the default rounding direction).356)
- x - x (->) 0.0 The expressions x - x and 0.0 are not equivalent if x is a NaN or
- infinite.
- 0 x x (->) 0.0 The expressions 0 x x and 0.0 are not equivalent if x is a NaN,
- infinite, or -0.
- x+0(->) x The expressions x + 0 and x are not equivalent if x is -0, because
- (-0) + (+0) yields +0 (in the default rounding direction), not -0.
- x-0(->) x (+0) - (+0) yields -0 when rounding is downward (toward -(inf)), but
- +0 otherwise, and (-0) - (+0) always yields -0; so, if the state of the
- FENV_ACCESS pragma is ''off'', promising default rounding, then
- the implementation can replace x - 0 by x, even if x might be zero.
- -x (<->) 0 - x The expressions -x and 0 - x are not equivalent if x is +0, because
- -(+0) yields -0, but 0 - (+0) yields +0 (unless rounding is
- downward).
-
- 355) Strict support for signaling NaNs -- not required by this specification -- would invalidate these and
- other transformations that remove arithmetic operators.
- 356) IEC 60559 prescribes a signed zero to preserve mathematical identities across certain discontinuities.
- Examples include:
- 1/(1/ (+-) (inf)) is (+-) (inf)
- and
- conj(csqrt(z)) is csqrt(conj(z)),
- for complex z.
-
-[<a name="p511" href="#p511">page 511</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.9.3" href="#F.9.3"><b> F.9.3 Relational operators</b></a>
-1 x != x (->) false The expression x != x is true if x is a NaN.
- x = x (->) true The expression x = x is false if x is a NaN.
- x < y (->) isless(x,y) (and similarly for <=, >, >=) Though numerically equal, these
- expressions are not equivalent because of side effects when x or y is a
- NaN and the state of the FENV_ACCESS pragma is ''on''. This
- transformation, which would be desirable if extra code were required
- to cause the ''invalid'' floating-point exception for unordered cases,
- could be performed provided the state of the FENV_ACCESS pragma
- is ''off''.
- The sense of relational operators shall be maintained. This includes handling unordered
- cases as expressed by the source code.
-2 EXAMPLE
- // calls g and raises ''invalid'' if a and b are unordered
- if (a < b)
- f();
- else
- g();
- is not equivalent to
- // calls f and raises ''invalid'' if a and b are unordered
- if (a >= b)
- g();
- else
- f();
- nor to
- // calls f without raising ''invalid'' if a and b are unordered
- if (isgreaterequal(a,b))
- g();
- else
- f();
- nor, unless the state of the FENV_ACCESS pragma is ''off'', to
- // calls g without raising ''invalid'' if a and b are unordered
- if (isless(a,b))
- f();
- else
- g();
- but is equivalent to
-
-
-
-
-[<a name="p512" href="#p512">page 512</a>] (<a href="#Contents">Contents</a>)
-
- if (!(a < b))
- g();
- else
- f();
-
-<a name="F.9.4" href="#F.9.4"><b> F.9.4 Constant arithmetic</b></a>
-1 The implementation shall honor floating-point exceptions raised by execution-time
- constant arithmetic wherever the state of the FENV_ACCESS pragma is ''on''. (See <a href="#F.8.4">F.8.4</a>
- and <a href="#F.8.5">F.8.5</a>.) An operation on constants that raises no floating-point exception can be
- folded during translation, except, if the state of the FENV_ACCESS pragma is ''on'', a
- further check is required to assure that changing the rounding direction to downward does
- not alter the sign of the result,357) and implementations that support dynamic rounding
- precision modes shall assure further that the result of the operation raises no floating-
- point exception when converted to the semantic type of the operation.
-<a name="F.10" href="#F.10"><b> F.10 Mathematics <math.h></b></a>
-1 This subclause contains specifications of <a href="#7.12"><math.h></a> facilities that are particularly suited
- for IEC 60559 implementations.
-2 The Standard C macro HUGE_VAL and its float and long double analogs,
- HUGE_VALF and HUGE_VALL, expand to expressions whose values are positive
- infinities.
-3 Special cases for functions in <a href="#7.12"><math.h></a> are covered directly or indirectly by
- IEC 60559. The functions that IEC 60559 specifies directly are identified in <a href="#F.3">F.3</a>. The
- other functions in <a href="#7.12"><math.h></a> treat infinities, NaNs, signed zeros, subnormals, and
- (provided the state of the FENV_ACCESS pragma is ''on'') the floating-point status flags
- in a manner consistent with the basic arithmetic operations covered by IEC 60559.
-4 The expression math_errhandling & MATH_ERREXCEPT shall evaluate to a
- nonzero value.
-5 The ''invalid'' and ''divide-by-zero'' floating-point exceptions are raised as specified in
- subsequent subclauses of this annex.
-6 The ''overflow'' floating-point exception is raised whenever an infinity -- or, because of
- rounding direction, a maximal-magnitude finite number -- is returned in lieu of a value
- whose magnitude is too large.
-7 The ''underflow'' floating-point exception is raised whenever a result is tiny (essentially
- subnormal or zero) and suffers loss of accuracy.358)
-
-
- 357) 0 - 0 yields -0 instead of +0 just when the rounding direction is downward.
- 358) IEC 60559 allows different definitions of underflow. They all result in the same values, but differ on
- when the floating-point exception is raised.
-
-[<a name="p513" href="#p513">page 513</a>] (<a href="#Contents">Contents</a>)
-
-8 Whether or when library functions raise the ''inexact'' floating-point exception is
- unspecified, unless explicitly specified otherwise.
-9 Whether or when library functions raise an undeserved ''underflow'' floating-point
- exception is unspecified.359) Otherwise, as implied by <a href="#F.8.6">F.8.6</a>, the <a href="#7.12"><math.h></a> functions do
- not raise spurious floating-point exceptions (detectable by the user), other than the
- ''inexact'' floating-point exception.
-10 Whether the functions honor the rounding direction mode is implementation-defined,
- unless explicitly specified otherwise.
-11 Functions with a NaN argument return a NaN result and raise no floating-point exception,
- except where stated otherwise.
-12 The specifications in the following subclauses append to the definitions in <a href="#7.12"><math.h></a>.
- For families of functions, the specifications apply to all of the functions even though only
- the principal function is shown. Unless otherwise specified, where the symbol ''(+-)''
- occurs in both an argument and the result, the result has the same sign as the argument.
- Recommended practice
-13 If a function with one or more NaN arguments returns a NaN result, the result should be
- the same as one of the NaN arguments (after possible type conversion), except perhaps
- for the sign.
-<a name="F.10.1" href="#F.10.1"><b> F.10.1 Trigonometric functions</b></a>
-<a name="F.10.1.1" href="#F.10.1.1"><b> F.10.1.1 The acos functions</b></a>
-1 -- acos(1) returns +0.
- -- acos(x) returns a NaN and raises the ''invalid'' floating-point exception for
- | x | > 1.
-<a name="F.10.1.2" href="#F.10.1.2"><b> F.10.1.2 The asin functions</b></a>
-1 -- asin((+-)0) returns (+-)0.
- -- asin(x) returns a NaN and raises the ''invalid'' floating-point exception for
- | x | > 1.
-
-
-
-
- 359) It is intended that undeserved ''underflow'' and ''inexact'' floating-point exceptions are raised only if
- avoiding them would be too costly.
-
-[<a name="p514" href="#p514">page 514</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.1.3" href="#F.10.1.3"><b> F.10.1.3 The atan functions</b></a>
-1 -- atan((+-)0) returns (+-)0.
- -- atan((+-)(inf)) returns (+-)pi /2.
-<a name="F.10.1.4" href="#F.10.1.4"><b> F.10.1.4 The atan2 functions</b></a>
-1 -- atan2((+-)0, -0) returns (+-)pi .360)
- -- atan2((+-)0, +0) returns (+-)0.
- -- atan2((+-)0, x) returns (+-)pi for x < 0.
- -- atan2((+-)0, x) returns (+-)0 for x > 0.
- -- atan2(y, (+-)0) returns -pi /2 for y < 0.
- -- atan2(y, (+-)0) returns pi /2 for y > 0.
- -- atan2((+-)y, -(inf)) returns (+-)pi for finite y > 0.
- -- atan2((+-)y, +(inf)) returns (+-)0 for finite y > 0.
- -- atan2((+-)(inf), x) returns (+-)pi /2 for finite x.
- -- atan2((+-)(inf), -(inf)) returns (+-)3pi /4.
- -- atan2((+-)(inf), +(inf)) returns (+-)pi /4.
-<a name="F.10.1.5" href="#F.10.1.5"><b> F.10.1.5 The cos functions</b></a>
-1 -- cos((+-)0) returns 1.
- -- cos((+-)(inf)) returns a NaN and raises the ''invalid'' floating-point exception.
-<a name="F.10.1.6" href="#F.10.1.6"><b> F.10.1.6 The sin functions</b></a>
-1 -- sin((+-)0) returns (+-)0.
- -- sin((+-)(inf)) returns a NaN and raises the ''invalid'' floating-point exception.
-<a name="F.10.1.7" href="#F.10.1.7"><b> F.10.1.7 The tan functions</b></a>
-1 -- tan((+-)0) returns (+-)0.
- -- tan((+-)(inf)) returns a NaN and raises the ''invalid'' floating-point exception.
-
-
-
-
- 360) atan2(0, 0) does not raise the ''invalid'' floating-point exception, nor does atan2( y , 0) raise
- the ''divide-by-zero'' floating-point exception.
-
-[<a name="p515" href="#p515">page 515</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.2" href="#F.10.2"><b> F.10.2 Hyperbolic functions</b></a>
-<a name="F.10.2.1" href="#F.10.2.1"><b> F.10.2.1 The acosh functions</b></a>
-1 -- acosh(1) returns +0.
- -- acosh(x) returns a NaN and raises the ''invalid'' floating-point exception for x < 1.
- -- acosh(+(inf)) returns +(inf).
-<a name="F.10.2.2" href="#F.10.2.2"><b> F.10.2.2 The asinh functions</b></a>
-1 -- asinh((+-)0) returns (+-)0.
- -- asinh((+-)(inf)) returns (+-)(inf).
-<a name="F.10.2.3" href="#F.10.2.3"><b> F.10.2.3 The atanh functions</b></a>
-1 -- atanh((+-)0) returns (+-)0.
- -- atanh((+-)1) returns (+-)(inf) and raises the ''divide-by-zero'' floating-point exception.
- -- atanh(x) returns a NaN and raises the ''invalid'' floating-point exception for
- | x | > 1.
-<a name="F.10.2.4" href="#F.10.2.4"><b> F.10.2.4 The cosh functions</b></a>
-1 -- cosh((+-)0) returns 1.
- -- cosh((+-)(inf)) returns +(inf).
-<a name="F.10.2.5" href="#F.10.2.5"><b> F.10.2.5 The sinh functions</b></a>
-1 -- sinh((+-)0) returns (+-)0.
- -- sinh((+-)(inf)) returns (+-)(inf).
-<a name="F.10.2.6" href="#F.10.2.6"><b> F.10.2.6 The tanh functions</b></a>
-1 -- tanh((+-)0) returns (+-)0.
- -- tanh((+-)(inf)) returns (+-)1.
-<a name="F.10.3" href="#F.10.3"><b> F.10.3 Exponential and logarithmic functions</b></a>
-<a name="F.10.3.1" href="#F.10.3.1"><b> F.10.3.1 The exp functions</b></a>
-1 -- exp((+-)0) returns 1.
- -- exp(-(inf)) returns +0.
- -- exp(+(inf)) returns +(inf).
-
-
-
-
-[<a name="p516" href="#p516">page 516</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.3.2" href="#F.10.3.2"><b> F.10.3.2 The exp2 functions</b></a>
-1 -- exp2((+-)0) returns 1.
- -- exp2(-(inf)) returns +0.
- -- exp2(+(inf)) returns +(inf).
-<a name="F.10.3.3" href="#F.10.3.3"><b> F.10.3.3 The expm1 functions</b></a>
-1 -- expm1((+-)0) returns (+-)0.
- -- expm1(-(inf)) returns -1.
- -- expm1(+(inf)) returns +(inf).
-<a name="F.10.3.4" href="#F.10.3.4"><b> F.10.3.4 The frexp functions</b></a>
-1 -- frexp((+-)0, exp) returns (+-)0, and stores 0 in the object pointed to by exp.
- -- frexp((+-)(inf), exp) returns (+-)(inf), and stores an unspecified value in the object
- pointed to by exp.
- -- frexp(NaN, exp) stores an unspecified value in the object pointed to by exp
- (and returns a NaN).
-2 frexp raises no floating-point exceptions.
-3 When the radix of the argument is a power of 2, the returned value is exact and is
- independent of the current rounding direction mode.
-4 On a binary system, the body of the frexp function might be
- {
- *exp = (value == 0) ? 0 : (int)(1 + logb(value));
- return scalbn(value, -(*exp));
- }
-<a name="F.10.3.5" href="#F.10.3.5"><b> F.10.3.5 The ilogb functions</b></a>
-1 When the correct result is representable in the range of the return type, the returned value
- is exact and is independent of the current rounding direction mode.
-2 If the correct result is outside the range of the return type, the numeric result is
- unspecified and the ''invalid'' floating-point exception is raised.
-
-
-
-
-[<a name="p517" href="#p517">page 517</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.3.6" href="#F.10.3.6"><b> F.10.3.6 The ldexp functions</b></a>
-1 On a binary system, ldexp(x, exp) is equivalent to scalbn(x, exp).
-<a name="F.10.3.7" href="#F.10.3.7"><b> F.10.3.7 The log functions</b></a>
-1 -- log((+-)0) returns -(inf) and raises the ''divide-by-zero'' floating-point exception.
- -- log(1) returns +0.
- -- log(x) returns a NaN and raises the ''invalid'' floating-point exception for x < 0.
- -- log(+(inf)) returns +(inf).
-<a name="F.10.3.8" href="#F.10.3.8"><b> F.10.3.8 The log10 functions</b></a>
-1 -- log10((+-)0) returns -(inf) and raises the ''divide-by-zero'' floating-point exception.
- -- log10(1) returns +0.
- -- log10(x) returns a NaN and raises the ''invalid'' floating-point exception for x < 0.
- -- log10(+(inf)) returns +(inf).
-<a name="F.10.3.9" href="#F.10.3.9"><b> F.10.3.9 The log1p functions</b></a>
-1 -- log1p((+-)0) returns (+-)0.
- -- log1p(-1) returns -(inf) and raises the ''divide-by-zero'' floating-point exception.
- -- log1p(x) returns a NaN and raises the ''invalid'' floating-point exception for
- x < -1.
- -- log1p(+(inf)) returns +(inf).
-<a name="F.10.3.10" href="#F.10.3.10"><b> F.10.3.10 The log2 functions</b></a>
-1 -- log2((+-)0) returns -(inf) and raises the ''divide-by-zero'' floating-point exception.
- -- log2(1) returns +0.
- -- log2(x) returns a NaN and raises the ''invalid'' floating-point exception for x < 0.
- -- log2(+(inf)) returns +(inf).
-<a name="F.10.3.11" href="#F.10.3.11"><b> F.10.3.11 The logb functions</b></a>
-1 -- logb((+-)0) returns -(inf) and raises the ''divide-by-zero'' floating-point exception.
- -- logb((+-)(inf)) returns +(inf).
-2 The returned value is exact and is independent of the current rounding direction mode.
-
-
-
-
-[<a name="p518" href="#p518">page 518</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.3.12" href="#F.10.3.12"><b> F.10.3.12 The modf functions</b></a>
-1 -- modf((+-)x, iptr) returns a result with the same sign as x.
- -- modf((+-)(inf), iptr) returns (+-)0 and stores (+-)(inf) in the object pointed to by iptr.
- -- modf(NaN, iptr) stores a NaN in the object pointed to by iptr (and returns a
- NaN).
-2 The returned values are exact and are independent of the current rounding direction
- mode.
-3 modf behaves as though implemented by
- #include <a href="#7.12"><math.h></a>
- #include <a href="#7.6"><fenv.h></a>
- #pragma STDC FENV_ACCESS ON
- double modf(double value, double *iptr)
- {
- int save_round = fegetround();
- fesetround(FE_TOWARDZERO);
- *iptr = nearbyint(value);
- fesetround(save_round);
- return copysign(
- isinf(value) ? 0.0 :
- value - (*iptr), value);
- }
-<a name="F.10.3.13" href="#F.10.3.13"><b> F.10.3.13 The scalbn and scalbln functions</b></a>
-1 -- scalbn((+-)0, n) returns (+-)0.
- -- scalbn(x, 0) returns x.
- -- scalbn((+-)(inf), n) returns (+-)(inf).
-2 If the calculation does not overflow or underflow, the returned value is exact and
- independent of the current rounding direction mode.
-
-
-
-
-[<a name="p519" href="#p519">page 519</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.4" href="#F.10.4"><b> F.10.4 Power and absolute value functions</b></a>
-<a name="F.10.4.1" href="#F.10.4.1"><b> F.10.4.1 The cbrt functions</b></a>
-1 -- cbrt((+-)0) returns (+-)0.
- -- cbrt((+-)(inf)) returns (+-)(inf).
-<a name="F.10.4.2" href="#F.10.4.2"><b> F.10.4.2 The fabs functions</b></a>
-1 -- fabs((+-)0) returns +0.
- -- fabs((+-)(inf)) returns +(inf).
-2 The returned value is exact and is independent of the current rounding direction mode.
-<a name="F.10.4.3" href="#F.10.4.3"><b> F.10.4.3 The hypot functions</b></a>
-1 -- hypot(x, y), hypot(y, x), and hypot(x, -y) are equivalent.
- -- hypot(x, (+-)0) is equivalent to fabs(x).
- -- hypot((+-)(inf), y) returns +(inf), even if y is a NaN.
-<a name="F.10.4.4" href="#F.10.4.4"><b> F.10.4.4 The pow functions</b></a>
-1 -- pow((+-)0, y) returns (+-)(inf) and raises the ''divide-by-zero'' floating-point exception
- for y an odd integer < 0.
- -- pow((+-)0, y) returns +(inf) and raises the ''divide-by-zero'' floating-point exception
- for y < 0, finite, and not an odd integer.
- -- pow((+-)0, -(inf)) returns +(inf) and may raise the ''divide-by-zero'' floating-point
- exception.
- -- pow((+-)0, y) returns (+-)0 for y an odd integer > 0.
- -- pow((+-)0, y) returns +0 for y > 0 and not an odd integer.
- -- pow(-1, (+-)(inf)) returns 1.
- -- pow(+1, y) returns 1 for any y, even a NaN.
- -- pow(x, (+-)0) returns 1 for any x, even a NaN.
- -- pow(x, y) returns a NaN and raises the ''invalid'' floating-point exception for
- finite x < 0 and finite non-integer y.
- -- pow(x, -(inf)) returns +(inf) for | x | < 1.
- -- pow(x, -(inf)) returns +0 for | x | > 1.
- -- pow(x, +(inf)) returns +0 for | x | < 1.
- -- pow(x, +(inf)) returns +(inf) for | x | > 1.
-
-
-[<a name="p520" href="#p520">page 520</a>] (<a href="#Contents">Contents</a>)
-
- -- pow(-(inf), y) returns -0 for y an odd integer < 0.
- -- pow(-(inf), y) returns +0 for y < 0 and not an odd integer.
- -- pow(-(inf), y) returns -(inf) for y an odd integer > 0.
- -- pow(-(inf), y) returns +(inf) for y > 0 and not an odd integer.
- -- pow(+(inf), y) returns +0 for y < 0.
- -- pow(+(inf), y) returns +(inf) for y > 0.
-<a name="F.10.4.5" href="#F.10.4.5"><b> F.10.4.5 The sqrt functions</b></a>
-1 sqrt is fully specified as a basic arithmetic operation in IEC 60559. The returned value
- is dependent on the current rounding direction mode.
-<a name="F.10.5" href="#F.10.5"><b> F.10.5 Error and gamma functions</b></a>
-<a name="F.10.5.1" href="#F.10.5.1"><b> F.10.5.1 The erf functions</b></a>
-1 -- erf((+-)0) returns (+-)0.
- -- erf((+-)(inf)) returns (+-)1.
-<a name="F.10.5.2" href="#F.10.5.2"><b> F.10.5.2 The erfc functions</b></a>
-1 -- erfc(-(inf)) returns 2.
- -- erfc(+(inf)) returns +0.
-<a name="F.10.5.3" href="#F.10.5.3"><b> F.10.5.3 The lgamma functions</b></a>
-1 -- lgamma(1) returns +0.
- -- lgamma(2) returns +0.
- -- lgamma(x) returns +(inf) and raises the ''divide-by-zero'' floating-point exception for
- x a negative integer or zero.
- -- lgamma(-(inf)) returns +(inf).
- -- lgamma(+(inf)) returns +(inf).
-<a name="F.10.5.4" href="#F.10.5.4"><b> F.10.5.4 The tgamma functions</b></a>
-1 -- tgamma((+-)0) returns (+-)(inf) and raises the ''divide-by-zero'' floating-point exception.
- -- tgamma(x) returns a NaN and raises the ''invalid'' floating-point exception for x a
- negative integer.
- -- tgamma(-(inf)) returns a NaN and raises the ''invalid'' floating-point exception.
- -- tgamma(+(inf)) returns +(inf).
-
-
-
-[<a name="p521" href="#p521">page 521</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.6" href="#F.10.6"><b> F.10.6 Nearest integer functions</b></a>
-<a name="F.10.6.1" href="#F.10.6.1"><b> F.10.6.1 The ceil functions</b></a>
-1 -- ceil((+-)0) returns (+-)0.
- -- ceil((+-)(inf)) returns (+-)(inf).
-2 The returned value is independent of the current rounding direction mode.
-3 The double version of ceil behaves as though implemented by
- #include <a href="#7.12"><math.h></a>
- #include <a href="#7.6"><fenv.h></a>
- #pragma STDC FENV_ACCESS ON
- double ceil(double x)
- {
- double result;
- int save_round = fegetround();
- fesetround(FE_UPWARD);
- result = rint(x); // or nearbyint instead of rint
- fesetround(save_round);
- return result;
- }
-4 The ceil functions may, but are not required to, raise the ''inexact'' floating-point
- exception for finite non-integer arguments, as this implementation does.
-<a name="F.10.6.2" href="#F.10.6.2"><b> F.10.6.2 The floor functions</b></a>
-1 -- floor((+-)0) returns (+-)0.
- -- floor((+-)(inf)) returns (+-)(inf).
-2 The returned value and is independent of the current rounding direction mode.
-3 See the sample implementation for ceil in <a href="#F.10.6.1">F.10.6.1</a>. The floor functions may, but are
- not required to, raise the ''inexact'' floating-point exception for finite non-integer
- arguments, as that implementation does.
-<a name="F.10.6.3" href="#F.10.6.3"><b> F.10.6.3 The nearbyint functions</b></a>
-1 The nearbyint functions use IEC 60559 rounding according to the current rounding
- direction. They do not raise the ''inexact'' floating-point exception if the result differs in
- value from the argument.
- -- nearbyint((+-)0) returns (+-)0 (for all rounding directions).
- -- nearbyint((+-)(inf)) returns (+-)(inf) (for all rounding directions).
-
-
-
-[<a name="p522" href="#p522">page 522</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.6.4" href="#F.10.6.4"><b> F.10.6.4 The rint functions</b></a>
-1 The rint functions differ from the nearbyint functions only in that they do raise the
- ''inexact'' floating-point exception if the result differs in value from the argument.
-<a name="F.10.6.5" href="#F.10.6.5"><b> F.10.6.5 The lrint and llrint functions</b></a>
-1 The lrint and llrint functions provide floating-to-integer conversion as prescribed
- by IEC 60559. They round according to the current rounding direction. If the rounded
- value is outside the range of the return type, the numeric result is unspecified and the
- ''invalid'' floating-point exception is raised. When they raise no other floating-point
- exception and the result differs from the argument, they raise the ''inexact'' floating-point
- exception.
-<a name="F.10.6.6" href="#F.10.6.6"><b> F.10.6.6 The round functions</b></a>
-1 -- round((+-)0) returns (+-)0.
- -- round((+-)(inf)) returns (+-)(inf).
-2 The returned value is independent of the current rounding direction mode.
-3 The double version of round behaves as though implemented by
- #include <a href="#7.12"><math.h></a>
- #include <a href="#7.6"><fenv.h></a>
- #pragma STDC FENV_ACCESS ON
- double round(double x)
- {
- double result;
- fenv_t save_env;
- feholdexcept(&save_env);
- result = rint(x);
- if (fetestexcept(FE_INEXACT)) {
- fesetround(FE_TOWARDZERO);
- result = rint(copysign(0.5 + fabs(x), x));
- }
- feupdateenv(&save_env);
- return result;
- }
- The round functions may, but are not required to, raise the ''inexact'' floating-point
- exception for finite non-integer numeric arguments, as this implementation does.
-
-
-
-
-[<a name="p523" href="#p523">page 523</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.6.7" href="#F.10.6.7"><b> F.10.6.7 The lround and llround functions</b></a>
-1 The lround and llround functions differ from the lrint and llrint functions
- with the default rounding direction just in that the lround and llround functions
- round halfway cases away from zero and need not raise the ''inexact'' floating-point
- exception for non-integer arguments that round to within the range of the return type.
-<a name="F.10.6.8" href="#F.10.6.8"><b> F.10.6.8 The trunc functions</b></a>
-1 The trunc functions use IEC 60559 rounding toward zero (regardless of the current
- rounding direction). The returned value is exact.
- -- trunc((+-)0) returns (+-)0.
- -- trunc((+-)(inf)) returns (+-)(inf).
-2 The returned value is independent of the current rounding direction mode. The trunc
- functions may, but are not required to, raise the ''inexact'' floating-point exception for
- finite non-integer arguments.
-<a name="F.10.7" href="#F.10.7"><b> F.10.7 Remainder functions</b></a>
-<a name="F.10.7.1" href="#F.10.7.1"><b> F.10.7.1 The fmod functions</b></a>
-1 -- fmod((+-)0, y) returns (+-)0 for y not zero.
- -- fmod(x, y) returns a NaN and raises the ''invalid'' floating-point exception for x
- infinite or y zero (and neither is a NaN).
- -- fmod(x, (+-)(inf)) returns x for x not infinite.
-2 When subnormal results are supported, the returned value is exact and is independent of
- the current rounding direction mode.
-3 The double version of fmod behaves as though implemented by
- #include <a href="#7.12"><math.h></a>
- #include <a href="#7.6"><fenv.h></a>
- #pragma STDC FENV_ACCESS ON
- double fmod(double x, double y)
- {
- double result;
- result = remainder(fabs(x), (y = fabs(y)));
- if (signbit(result)) result += y;
- return copysign(result, x);
- }
-
-
-
-
-[<a name="p524" href="#p524">page 524</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.7.2" href="#F.10.7.2"><b> F.10.7.2 The remainder functions</b></a>
-1 The remainder functions are fully specified as a basic arithmetic operation in
- IEC 60559.
-2 When subnormal results are supported, the returned value is exact and is independent of
- the current rounding direction mode.
-<a name="F.10.7.3" href="#F.10.7.3"><b> F.10.7.3 The remquo functions</b></a>
-1 The remquo functions follow the specifications for the remainder functions. They
- have no further specifications special to IEC 60559 implementations.
-2 When subnormal results are supported, the returned value is exact and is independent of
- the current rounding direction mode.
-<a name="F.10.8" href="#F.10.8"><b> F.10.8 Manipulation functions</b></a>
-<a name="F.10.8.1" href="#F.10.8.1"><b> F.10.8.1 The copysign functions</b></a>
-1 copysign is specified in the Appendix to IEC 60559.
-2 The returned value is exact and is independent of the current rounding direction mode.
-<a name="F.10.8.2" href="#F.10.8.2"><b> F.10.8.2 The nan functions</b></a>
-1 All IEC 60559 implementations support quiet NaNs, in all floating formats.
-2 The returned value is exact and is independent of the current rounding direction mode.
-<a name="F.10.8.3" href="#F.10.8.3"><b> F.10.8.3 The nextafter functions</b></a>
-1 -- nextafter(x, y) raises the ''overflow'' and ''inexact'' floating-point exceptions
- for x finite and the function value infinite.
- -- nextafter(x, y) raises the ''underflow'' and ''inexact'' floating-point
- exceptions for the function value subnormal or zero and x != y.
-2 Even though underflow or overflow can occur, the returned value is independent of the
- current rounding direction mode.
-<a name="F.10.8.4" href="#F.10.8.4"><b> F.10.8.4 The nexttoward functions</b></a>
-1 No additional requirements beyond those on nextafter.
-2 Even though underflow or overflow can occur, the returned value is independent of the
- current rounding direction mode.
-
-
-
-
-[<a name="p525" href="#p525">page 525</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.9" href="#F.10.9"><b> F.10.9 Maximum, minimum, and positive difference functions</b></a>
-<a name="F.10.9.1" href="#F.10.9.1"><b> F.10.9.1 The fdim functions</b></a>
-1 No additional requirements.
-<a name="F.10.9.2" href="#F.10.9.2"><b> F.10.9.2 The fmax functions</b></a>
-1 If just one argument is a NaN, the fmax functions return the other argument (if both
- arguments are NaNs, the functions return a NaN).
-2 The returned value is exact and is independent of the current rounding direction mode.
-3 The body of the fmax function might be361)
- { return (isgreaterequal(x, y) ||
- isnan(y)) ? x : y; }
-<a name="F.10.9.3" href="#F.10.9.3"><b> F.10.9.3 The fmin functions</b></a>
-1 The fmin functions are analogous to the fmax functions (see <a href="#F.10.9.2">F.10.9.2</a>).
-2 The returned value is exact and is independent of the current rounding direction mode.
-<a name="F.10.10" href="#F.10.10"><b> F.10.10 Floating multiply-add</b></a>
-<a name="F.10.10.1" href="#F.10.10.1"><b> F.10.10.1 The fma functions</b></a>
-1 -- fma(x, y, z) computes xy + z, correctly rounded once.
- -- fma(x, y, z) returns a NaN and optionally raises the ''invalid'' floating-point
- exception if one of x and y is infinite, the other is zero, and z is a NaN.
- -- fma(x, y, z) returns a NaN and raises the ''invalid'' floating-point exception if
- one of x and y is infinite, the other is zero, and z is not a NaN.
- -- fma(x, y, z) returns a NaN and raises the ''invalid'' floating-point exception if x
- times y is an exact infinity and z is also an infinity but with the opposite sign.
-
-
-
-
- 361) Ideally, fmax would be sensitive to the sign of zero, for example fmax(-0.0, +0.0) would
- return +0; however, implementation in software might be impractical.
-
-[<a name="p526" href="#p526">page 526</a>] (<a href="#Contents">Contents</a>)
-
-<a name="F.10.11" href="#F.10.11"><b> F.10.11 Comparison macros</b></a>
-1 Relational operators and their corresponding comparison macros (<a href="#7.12.14">7.12.14</a>) produce
- equivalent result values, even if argument values are represented in wider formats. Thus,
- comparison macro arguments represented in formats wider than their semantic types are
- not converted to the semantic types, unless the wide evaluation method converts operands
- of relational operators to their semantic types. The standard wide evaluation methods
- characterized by FLT_EVAL_METHOD equal to 1 or 2 (<a href="#5.2.4.2.2">5.2.4.2.2</a>), do not convert
- operands of relational operators to their semantic types.
-
-
-
-
-[<a name="p527" href="#p527">page 527</a>] (<a href="#Contents">Contents</a>)
-
-<a name="G" href="#G"><b> Annex G</b></a>
- (normative)
- IEC 60559-compatible complex arithmetic
-<a name="G.1" href="#G.1"><b> G.1 Introduction</b></a>
-1 This annex supplements <a href="#F">annex F</a> to specify complex arithmetic for compatibility with
- IEC 60559 real floating-point arithmetic. An implementation that defines *
- __STDC_IEC_559_COMPLEX__ shall conform to the specifications in this annex.362)
-<a name="G.2" href="#G.2"><b> G.2 Types</b></a>
-1 There is a new keyword _Imaginary, which is used to specify imaginary types. It is
- used as a type specifier within declaration specifiers in the same way as _Complex is
- (thus, _Imaginary float is a valid type name).
-2 There are three imaginary types, designated as float _Imaginary, double
- _Imaginary, and long double _Imaginary. The imaginary types (along with
- the real floating and complex types) are floating types.
-3 For imaginary types, the corresponding real type is given by deleting the keyword
- _Imaginary from the type name.
-4 Each imaginary type has the same representation and alignment requirements as the
- corresponding real type. The value of an object of imaginary type is the value of the real
- representation times the imaginary unit.
-5 The imaginary type domain comprises the imaginary types.
-<a name="G.3" href="#G.3"><b> G.3 Conventions</b></a>
-1 A complex or imaginary value with at least one infinite part is regarded as an infinity
- (even if its other part is a NaN). A complex or imaginary value is a finite number if each
- of its parts is a finite number (neither infinite nor NaN). A complex or imaginary value is
- a zero if each of its parts is a zero.
-
-
-
-
- 362) Implementations that do not define __STDC_IEC_559_COMPLEX__ are not required to conform
- to these specifications.
-
-[<a name="p528" href="#p528">page 528</a>] (<a href="#Contents">Contents</a>)
-
-<a name="G.4" href="#G.4"><b> G.4 Conversions</b></a>
-<a name="G.4.1" href="#G.4.1"><b> G.4.1 Imaginary types</b></a>
-1 Conversions among imaginary types follow rules analogous to those for real floating
- types.
-<a name="G.4.2" href="#G.4.2"><b> G.4.2 Real and imaginary</b></a>
-1 When a value of imaginary type is converted to a real type other than _Bool,363) the
- result is a positive zero.
-2 When a value of real type is converted to an imaginary type, the result is a positive
- imaginary zero.
-<a name="G.4.3" href="#G.4.3"><b> G.4.3 Imaginary and complex</b></a>
-1 When a value of imaginary type is converted to a complex type, the real part of the
- complex result value is a positive zero and the imaginary part of the complex result value
- is determined by the conversion rules for the corresponding real types.
-2 When a value of complex type is converted to an imaginary type, the real part of the
- complex value is discarded and the value of the imaginary part is converted according to
- the conversion rules for the corresponding real types.
-<a name="G.5" href="#G.5"><b> G.5 Binary operators</b></a>
-1 The following subclauses supplement <a href="#6.5">6.5</a> in order to specify the type of the result for an
- operation with an imaginary operand.
-2 For most operand types, the value of the result of a binary operator with an imaginary or
- complex operand is completely determined, with reference to real arithmetic, by the usual
- mathematical formula. For some operand types, the usual mathematical formula is
- problematic because of its treatment of infinities and because of undue overflow or
- underflow; in these cases the result satisfies certain properties (specified in <a href="#G.5.1">G.5.1</a>), but is
- not completely determined.
-
-
-
-
- 363) See <a href="#6.3.1.2">6.3.1.2</a>.
-
-[<a name="p529" href="#p529">page 529</a>] (<a href="#Contents">Contents</a>)
-
-<a name="G.5.1" href="#G.5.1"><b> G.5.1 Multiplicative operators</b></a>
-<b> Semantics</b>
-1 If one operand has real type and the other operand has imaginary type, then the result has
- imaginary type. If both operands have imaginary type, then the result has real type. (If
- either operand has complex type, then the result has complex type.)
-2 If the operands are not both complex, then the result and floating-point exception
- behavior of the * operator is defined by the usual mathematical formula:
- * u iv u + iv
-
- x xu i(xv) (xu) + i(xv)
-
- iy i(yu) -yv (-yv) + i(yu)
-
- x + iy (xu) + i(yu) (-yv) + i(xv)
-3 If the second operand is not complex, then the result and floating-point exception
- behavior of the / operator is defined by the usual mathematical formula:
- / u iv
-
- x x/u i(-x/v)
-
- iy i(y/u) y/v
-
- x + iy (x/u) + i(y/u) (y/v) + i(-x/v)
-4 The * and / operators satisfy the following infinity properties for all real, imaginary, and
- complex operands:364)
- -- if one operand is an infinity and the other operand is a nonzero finite number or an
- infinity, then the result of the * operator is an infinity;
- -- if the first operand is an infinity and the second operand is a finite number, then the
- result of the / operator is an infinity;
- -- if the first operand is a finite number and the second operand is an infinity, then the
- result of the / operator is a zero;
-
-
-
-
- 364) These properties are already implied for those cases covered in the tables, but are required for all cases
- (at least where the state for CX_LIMITED_RANGE is ''off'').
-
-[<a name="p530" href="#p530">page 530</a>] (<a href="#Contents">Contents</a>)
-
- -- if the first operand is a nonzero finite number or an infinity and the second operand is
- a zero, then the result of the / operator is an infinity.
-5 If both operands of the * operator are complex or if the second operand of the / operator
- is complex, the operator raises floating-point exceptions if appropriate for the calculation
- of the parts of the result, and may raise spurious floating-point exceptions.
-6 EXAMPLE 1 Multiplication of double _Complex operands could be implemented as follows. Note
- that the imaginary unit I has imaginary type (see <a href="#G.6">G.6</a>).
- #include <a href="#7.12"><math.h></a>
- #include <a href="#7.3"><complex.h></a>
- /* Multiply z * w ... */
- double complex _Cmultd(double complex z, double complex w)
- {
- #pragma STDC FP_CONTRACT OFF
- double a, b, c, d, ac, bd, ad, bc, x, y;
- a = creal(z); b = cimag(z);
- c = creal(w); d = cimag(w);
- ac = a * c; bd = b * d;
- ad = a * d; bc = b * c;
- x = ac - bd; y = ad + bc;
- if (isnan(x) && isnan(y)) {
- /* Recover infinities that computed as NaN+iNaN ... */
- int recalc = 0;
- if ( isinf(a) || isinf(b) ) { // z is infinite
- /* "Box" the infinity and change NaNs in the other factor to 0 */
- a = copysign(isinf(a) ? 1.0 : 0.0, a);
- b = copysign(isinf(b) ? 1.0 : 0.0, b);
- if (isnan(c)) c = copysign(0.0, c);
- if (isnan(d)) d = copysign(0.0, d);
- recalc = 1;
- }
- if ( isinf(c) || isinf(d) ) { // w is infinite
- /* "Box" the infinity and change NaNs in the other factor to 0 */
- c = copysign(isinf(c) ? 1.0 : 0.0, c);
- d = copysign(isinf(d) ? 1.0 : 0.0, d);
- if (isnan(a)) a = copysign(0.0, a);
- if (isnan(b)) b = copysign(0.0, b);
- recalc = 1;
- }
- if (!recalc && (isinf(ac) || isinf(bd) ||
- isinf(ad) || isinf(bc))) {
- /* Recover infinities from overflow by changing NaNs to 0 ... */
- if (isnan(a)) a = copysign(0.0, a);
- if (isnan(b)) b = copysign(0.0, b);
- if (isnan(c)) c = copysign(0.0, c);
- if (isnan(d)) d = copysign(0.0, d);
- recalc = 1;
- }
- if (recalc) {
-
-[<a name="p531" href="#p531">page 531</a>] (<a href="#Contents">Contents</a>)
-
- x = INFINITY * ( a * c - b * d );
- y = INFINITY * ( a * d + b * c );
- }
- }
- return x + I * y;
- }
-7 This implementation achieves the required treatment of infinities at the cost of only one isnan test in
- ordinary (finite) cases. It is less than ideal in that undue overflow and underflow may occur.
-
-8 EXAMPLE 2 Division of two double _Complex operands could be implemented as follows.
- #include <a href="#7.12"><math.h></a>
- #include <a href="#7.3"><complex.h></a>
- /* Divide z / w ... */
- double complex _Cdivd(double complex z, double complex w)
- {
- #pragma STDC FP_CONTRACT OFF
- double a, b, c, d, logbw, denom, x, y;
- int ilogbw = 0;
- a = creal(z); b = cimag(z);
- c = creal(w); d = cimag(w);
- logbw = logb(fmax(fabs(c), fabs(d)));
- if (logbw == INFINITY) {
- ilogbw = (int)logbw;
- c = scalbn(c, -ilogbw); d = scalbn(d, -ilogbw);
- }
- denom = c * c + d * d;
- x = scalbn((a * c + b * d) / denom, -ilogbw);
- y = scalbn((b * c - a * d) / denom, -ilogbw);
- /* Recover infinities and zeros that computed as NaN+iNaN; */
- /* the only cases are nonzero/zero, infinite/finite, and finite/infinite, ... */
- if (isnan(x) && isnan(y)) {
- if ((denom == 0.0) &&
- (!isnan(a) || !isnan(b))) {
- x = copysign(INFINITY, c) * a;
- y = copysign(INFINITY, c) * b;
- }
- else if ((isinf(a) || isinf(b)) &&
- isfinite(c) && isfinite(d)) {
- a = copysign(isinf(a) ? 1.0 : 0.0, a);
- b = copysign(isinf(b) ? 1.0 : 0.0, b);
- x = INFINITY * ( a * c + b * d );
- y = INFINITY * ( b * c - a * d );
- }
- else if (isinf(logbw) &&
- isfinite(a) && isfinite(b)) {
- c = copysign(isinf(c) ? 1.0 : 0.0, c);
- d = copysign(isinf(d) ? 1.0 : 0.0, d);
- x = 0.0 * ( a * c + b * d );
- y = 0.0 * ( b * c - a * d );
-
-[<a name="p532" href="#p532">page 532</a>] (<a href="#Contents">Contents</a>)
-
- }
- }
- return x + I * y;
- }
-9 Scaling the denominator alleviates the main overflow and underflow problem, which is more serious than
- for multiplication. In the spirit of the multiplication example above, this code does not defend against
- overflow and underflow in the calculation of the numerator. Scaling with the scalbn function, instead of
- with division, provides better roundoff characteristics.
-
-<a name="G.5.2" href="#G.5.2"><b> G.5.2 Additive operators</b></a>
-<b> Semantics</b>
-1 If both operands have imaginary type, then the result has imaginary type. (If one operand
- has real type and the other operand has imaginary type, or if either operand has complex
- type, then the result has complex type.)
-2 In all cases the result and floating-point exception behavior of a + or - operator is defined
- by the usual mathematical formula:
- + or - u iv u + iv
-
- x x(+-)u x (+-) iv (x (+-) u) (+-) iv
-
- iy (+-)u + iy i(y (+-) v) (+-)u + i(y (+-) v)
-
- x + iy (x (+-) u) + iy x + i(y (+-) v) (x (+-) u) + i(y (+-) v)
-<a name="G.6" href="#G.6"><b> G.6 Complex arithmetic <complex.h></b></a>
-1 The macros
- imaginary
- and
- _Imaginary_I
- are defined, respectively, as _Imaginary and a constant expression of type const
- float _Imaginary with the value of the imaginary unit. The macro
- I
- is defined to be _Imaginary_I (not _Complex_I as stated in <a href="#7.3">7.3</a>). Notwithstanding
- the provisions of <a href="#7.1.3">7.1.3</a>, a program may undefine and then perhaps redefine the macro
- imaginary.
-2 This subclause contains specifications for the <a href="#7.3"><complex.h></a> functions that are
- particularly suited to IEC 60559 implementations. For families of functions, the
- specifications apply to all of the functions even though only the principal function is
-
-[<a name="p533" href="#p533">page 533</a>] (<a href="#Contents">Contents</a>)
-
- shown. Unless otherwise specified, where the symbol ''(+-)'' occurs in both an argument
- and the result, the result has the same sign as the argument.
-3 The functions are continuous onto both sides of their branch cuts, taking into account the
- sign of zero. For example, csqrt(-2 (+-) i0) = (+-)isqrt:2. -
-4 Since complex and imaginary values are composed of real values, each function may be
- regarded as computing real values from real values. Except as noted, the functions treat
- real infinities, NaNs, signed zeros, subnormals, and the floating-point exception flags in a
- manner consistent with the specifications for real functions in F.10.365)
-5 The functions cimag, conj, cproj, and creal are fully specified for all
- implementations, including IEC 60559 ones, in <a href="#7.3.9">7.3.9</a>. These functions raise no floating-
- point exceptions.
-6 Each of the functions cabs and carg is specified by a formula in terms of a real
- function (whose special cases are covered in <a href="#F">annex F</a>):
- cabs(x + iy) = hypot(x, y)
- carg(x + iy) = atan2(y, x)
-7 Each of the functions casin, catan, ccos, csin, and ctan is specified implicitly by
- a formula in terms of other complex functions (whose special cases are specified below):
- casin(z) = -i casinh(iz)
- catan(z) = -i catanh(iz)
- ccos(z) = ccosh(iz)
- csin(z) = -i csinh(iz)
- ctan(z) = -i ctanh(iz)
-8 For the other functions, the following subclauses specify behavior for special cases,
- including treatment of the ''invalid'' and ''divide-by-zero'' floating-point exceptions. For
- families of functions, the specifications apply to all of the functions even though only the
- principal function is shown. For a function f satisfying f (conj(z)) = conj( f (z)), the
- specifications for the upper half-plane imply the specifications for the lower half-plane; if
- the function f is also either even, f (-z) = f (z), or odd, f (-z) = - f (z), then the
- specifications for the first quadrant imply the specifications for the other three quadrants.
-9 In the following subclauses, cis(y) is defined as cos(y) + i sin(y).
-
-
-
-
- 365) As noted in <a href="#G.3">G.3</a>, a complex value with at least one infinite part is regarded as an infinity even if its
- other part is a NaN.
-
-[<a name="p534" href="#p534">page 534</a>] (<a href="#Contents">Contents</a>)
-
-<a name="G.6.1" href="#G.6.1"><b> G.6.1 Trigonometric functions</b></a>
-<a name="G.6.1.1" href="#G.6.1.1"><b> G.6.1.1 The cacos functions</b></a>
-1 -- cacos(conj(z)) = conj(cacos(z)).
- -- cacos((+-)0 + i0) returns pi /2 - i0.
- -- cacos((+-)0 + iNaN) returns pi /2 + iNaN.
- -- cacos(x + i (inf)) returns pi /2 - i (inf), for finite x.
- -- cacos(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for nonzero finite x.
- -- cacos(-(inf) + iy) returns pi - i (inf), for positive-signed finite y.
- -- cacos(+(inf) + iy) returns +0 - i (inf), for positive-signed finite y.
- -- cacos(-(inf) + i (inf)) returns 3pi /4 - i (inf).
- -- cacos(+(inf) + i (inf)) returns pi /4 - i (inf).
- -- cacos((+-)(inf) + iNaN) returns NaN (+-) i (inf) (where the sign of the imaginary part of the
- result is unspecified).
- -- cacos(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for finite y.
- -- cacos(NaN + i (inf)) returns NaN - i (inf).
- -- cacos(NaN + iNaN) returns NaN + iNaN.
-<a name="G.6.2" href="#G.6.2"><b> G.6.2 Hyperbolic functions</b></a>
-<a name="G.6.2.1" href="#G.6.2.1"><b> G.6.2.1 The cacosh functions</b></a>
-1 -- cacosh(conj(z)) = conj(cacosh(z)).
- -- cacosh((+-)0 + i0) returns +0 + ipi /2.
- -- cacosh(x + i (inf)) returns +(inf) + ipi /2, for finite x.
- -- cacosh(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid''
- floating-point exception, for finite x.
- -- cacosh(-(inf) + iy) returns +(inf) + ipi , for positive-signed finite y.
- -- cacosh(+(inf) + iy) returns +(inf) + i0, for positive-signed finite y.
- -- cacosh(-(inf) + i (inf)) returns +(inf) + i3pi /4.
- -- cacosh(+(inf) + i (inf)) returns +(inf) + ipi /4.
- -- cacosh((+-)(inf) + iNaN) returns +(inf) + iNaN.
-
-
-[<a name="p535" href="#p535">page 535</a>] (<a href="#Contents">Contents</a>)
-
- -- cacosh(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid''
- floating-point exception, for finite y.
- -- cacosh(NaN + i (inf)) returns +(inf) + iNaN.
- -- cacosh(NaN + iNaN) returns NaN + iNaN.
-<a name="G.6.2.2" href="#G.6.2.2"><b> G.6.2.2 The casinh functions</b></a>
-1 -- casinh(conj(z)) = conj(casinh(z)) and casinh is odd.
- -- casinh(+0 + i0) returns 0 + i0.
- -- casinh(x + i (inf)) returns +(inf) + ipi /2 for positive-signed finite x.
- -- casinh(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid''
- floating-point exception, for finite x.
- -- casinh(+(inf) + iy) returns +(inf) + i0 for positive-signed finite y.
- -- casinh(+(inf) + i (inf)) returns +(inf) + ipi /4.
- -- casinh(+(inf) + iNaN) returns +(inf) + iNaN.
- -- casinh(NaN + i0) returns NaN + i0.
- -- casinh(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid''
- floating-point exception, for finite nonzero y.
- -- casinh(NaN + i (inf)) returns (+-)(inf) + iNaN (where the sign of the real part of the result
- is unspecified).
- -- casinh(NaN + iNaN) returns NaN + iNaN.
-<a name="G.6.2.3" href="#G.6.2.3"><b> G.6.2.3 The catanh functions</b></a>
-1 -- catanh(conj(z)) = conj(catanh(z)) and catanh is odd.
- -- catanh(+0 + i0) returns +0 + i0.
- -- catanh(+0 + iNaN) returns +0 + iNaN.
- -- catanh(+1 + i0) returns +(inf) + i0 and raises the ''divide-by-zero'' floating-point
- exception.
- -- catanh(x + i (inf)) returns +0 + ipi /2, for finite positive-signed x.
- -- catanh(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid''
- floating-point exception, for nonzero finite x.
- -- catanh(+(inf) + iy) returns +0 + ipi /2, for finite positive-signed y.
- -- catanh(+(inf) + i (inf)) returns +0 + ipi /2.
- -- catanh(+(inf) + iNaN) returns +0 + iNaN.
-
-[<a name="p536" href="#p536">page 536</a>] (<a href="#Contents">Contents</a>)
-
- -- catanh(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid''
- floating-point exception, for finite y.
- -- catanh(NaN + i (inf)) returns (+-)0 + ipi /2 (where the sign of the real part of the result is
- unspecified).
- -- catanh(NaN + iNaN) returns NaN + iNaN.
-<a name="G.6.2.4" href="#G.6.2.4"><b> G.6.2.4 The ccosh functions</b></a>
-1 -- ccosh(conj(z)) = conj(ccosh(z)) and ccosh is even.
- -- ccosh(+0 + i0) returns 1 + i0.
- -- ccosh(+0 + i (inf)) returns NaN (+-) i0 (where the sign of the imaginary part of the
- result is unspecified) and raises the ''invalid'' floating-point exception.
- -- ccosh(+0 + iNaN) returns NaN (+-) i0 (where the sign of the imaginary part of the
- result is unspecified).
- -- ccosh(x + i (inf)) returns NaN + iNaN and raises the ''invalid'' floating-point
- exception, for finite nonzero x.
- -- ccosh(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for finite nonzero x.
- -- ccosh(+(inf) + i0) returns +(inf) + i0.
- -- ccosh(+(inf) + iy) returns +(inf) cis(y), for finite nonzero y.
- -- ccosh(+(inf) + i (inf)) returns (+-)(inf) + iNaN (where the sign of the real part of the result is
- unspecified) and raises the ''invalid'' floating-point exception.
- -- ccosh(+(inf) + iNaN) returns +(inf) + iNaN.
- -- ccosh(NaN + i0) returns NaN (+-) i0 (where the sign of the imaginary part of the
- result is unspecified).
- -- ccosh(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for all nonzero numbers y.
- -- ccosh(NaN + iNaN) returns NaN + iNaN.
-<a name="G.6.2.5" href="#G.6.2.5"><b> G.6.2.5 The csinh functions</b></a>
-1 -- csinh(conj(z)) = conj(csinh(z)) and csinh is odd.
- -- csinh(+0 + i0) returns +0 + i0.
- -- csinh(+0 + i (inf)) returns (+-)0 + iNaN (where the sign of the real part of the result is
- unspecified) and raises the ''invalid'' floating-point exception.
- -- csinh(+0 + iNaN) returns (+-)0 + iNaN (where the sign of the real part of the result is
- unspecified).
-[<a name="p537" href="#p537">page 537</a>] (<a href="#Contents">Contents</a>)
-
- -- csinh(x + i (inf)) returns NaN + iNaN and raises the ''invalid'' floating-point
- exception, for positive finite x.
- -- csinh(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for finite nonzero x.
- -- csinh(+(inf) + i0) returns +(inf) + i0.
- -- csinh(+(inf) + iy) returns +(inf) cis(y), for positive finite y.
- -- csinh(+(inf) + i (inf)) returns (+-)(inf) + iNaN (where the sign of the real part of the result is
- unspecified) and raises the ''invalid'' floating-point exception.
- -- csinh(+(inf) + iNaN) returns (+-)(inf) + iNaN (where the sign of the real part of the result
- is unspecified).
- -- csinh(NaN + i0) returns NaN + i0.
- -- csinh(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for all nonzero numbers y.
- -- csinh(NaN + iNaN) returns NaN + iNaN.
-<a name="G.6.2.6" href="#G.6.2.6"><b> G.6.2.6 The ctanh functions</b></a>
-1 -- ctanh(conj(z)) = conj(ctanh(z))and ctanh is odd.
- -- ctanh(+0 + i0) returns +0 + i0.
- -- ctanh(x + i (inf)) returns NaN + iNaN and raises the ''invalid'' floating-point
- exception, for finite x.
- -- ctanh(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for finite x.
- -- ctanh(+(inf) + iy) returns 1 + i0 sin(2y), for positive-signed finite y.
- -- ctanh(+(inf) + i (inf)) returns 1 (+-) i0 (where the sign of the imaginary part of the result
- is unspecified).
- -- ctanh(+(inf) + iNaN) returns 1 (+-) i0 (where the sign of the imaginary part of the
- result is unspecified).
- -- ctanh(NaN + i0) returns NaN + i0.
- -- ctanh(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for all nonzero numbers y.
- -- ctanh(NaN + iNaN) returns NaN + iNaN.
-
-
-
-
-[<a name="p538" href="#p538">page 538</a>] (<a href="#Contents">Contents</a>)
-
-<a name="G.6.3" href="#G.6.3"><b> G.6.3 Exponential and logarithmic functions</b></a>
-<a name="G.6.3.1" href="#G.6.3.1"><b> G.6.3.1 The cexp functions</b></a>
-1 -- cexp(conj(z)) = conj(cexp(z)).
- -- cexp((+-)0 + i0) returns 1 + i0.
- -- cexp(x + i (inf)) returns NaN + iNaN and raises the ''invalid'' floating-point
- exception, for finite x.
- -- cexp(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for finite x.
- -- cexp(+(inf) + i0) returns +(inf) + i0.
- -- cexp(-(inf) + iy) returns +0 cis(y), for finite y.
- -- cexp(+(inf) + iy) returns +(inf) cis(y), for finite nonzero y.
- -- cexp(-(inf) + i (inf)) returns (+-)0 (+-) i0 (where the signs of the real and imaginary parts of
- the result are unspecified).
- -- cexp(+(inf) + i (inf)) returns (+-)(inf) + iNaN and raises the ''invalid'' floating-point
- exception (where the sign of the real part of the result is unspecified).
- -- cexp(-(inf) + iNaN) returns (+-)0 (+-) i0 (where the signs of the real and imaginary parts
- of the result are unspecified).
- -- cexp(+(inf) + iNaN) returns (+-)(inf) + iNaN (where the sign of the real part of the result
- is unspecified).
- -- cexp(NaN + i0) returns NaN + i0.
- -- cexp(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for all nonzero numbers y.
- -- cexp(NaN + iNaN) returns NaN + iNaN.
-<a name="G.6.3.2" href="#G.6.3.2"><b> G.6.3.2 The clog functions</b></a>
-1 -- clog(conj(z)) = conj(clog(z)).
- -- clog(-0 + i0) returns -(inf) + ipi and raises the ''divide-by-zero'' floating-point
- exception.
- -- clog(+0 + i0) returns -(inf) + i0 and raises the ''divide-by-zero'' floating-point
- exception.
- -- clog(x + i (inf)) returns +(inf) + ipi /2, for finite x.
- -- clog(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for finite x.
-
-[<a name="p539" href="#p539">page 539</a>] (<a href="#Contents">Contents</a>)
-
- -- clog(-(inf) + iy) returns +(inf) + ipi , for finite positive-signed y.
- -- clog(+(inf) + iy) returns +(inf) + i0, for finite positive-signed y.
- -- clog(-(inf) + i (inf)) returns +(inf) + i3pi /4.
- -- clog(+(inf) + i (inf)) returns +(inf) + ipi /4.
- -- clog((+-)(inf) + iNaN) returns +(inf) + iNaN.
- -- clog(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for finite y.
- -- clog(NaN + i (inf)) returns +(inf) + iNaN.
- -- clog(NaN + iNaN) returns NaN + iNaN.
-<a name="G.6.4" href="#G.6.4"><b> G.6.4 Power and absolute-value functions</b></a>
-<a name="G.6.4.1" href="#G.6.4.1"><b> G.6.4.1 The cpow functions</b></a>
-1 The cpow functions raise floating-point exceptions if appropriate for the calculation of
- the parts of the result, and may also raise spurious floating-point exceptions.366)
-<a name="G.6.4.2" href="#G.6.4.2"><b> G.6.4.2 The csqrt functions</b></a>
-1 -- csqrt(conj(z)) = conj(csqrt(z)).
- -- csqrt((+-)0 + i0) returns +0 + i0.
- -- csqrt(x + i (inf)) returns +(inf) + i (inf), for all x (including NaN).
- -- csqrt(x + iNaN) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for finite x.
- -- csqrt(-(inf) + iy) returns +0 + i (inf), for finite positive-signed y.
- -- csqrt(+(inf) + iy) returns +(inf) + i0, for finite positive-signed y.
- -- csqrt(-(inf) + iNaN) returns NaN (+-) i (inf) (where the sign of the imaginary part of the
- result is unspecified).
- -- csqrt(+(inf) + iNaN) returns +(inf) + iNaN.
- -- csqrt(NaN + iy) returns NaN + iNaN and optionally raises the ''invalid'' floating-
- point exception, for finite y.
- -- csqrt(NaN + iNaN) returns NaN + iNaN.
-
-
-
-
- 366) This allows cpow( z , c ) to be implemented as cexp(c clog( z )) without precluding
- implementations that treat special cases more carefully.
-
-[<a name="p540" href="#p540">page 540</a>] (<a href="#Contents">Contents</a>)
-
-<a name="G.7" href="#G.7"><b> G.7 Type-generic math <tgmath.h></b></a>
-1 Type-generic macros that accept complex arguments also accept imaginary arguments. If
- an argument is imaginary, the macro expands to an expression whose type is real,
- imaginary, or complex, as appropriate for the particular function: if the argument is
- imaginary, then the types of cos, cosh, fabs, carg, cimag, and creal are real; the
- types of sin, tan, sinh, tanh, asin, atan, asinh, and atanh are imaginary; and
- the types of the others are complex.
-2 Given an imaginary argument, each of the type-generic macros cos, sin, tan, cosh,
- sinh, tanh, asin, atan, asinh, atanh is specified by a formula in terms of real
- functions:
- cos(iy) = cosh(y)
- sin(iy) = i sinh(y)
- tan(iy) = i tanh(y)
- cosh(iy) = cos(y)
- sinh(iy) = i sin(y)
- tanh(iy) = i tan(y)
- asin(iy) = i asinh(y)
- atan(iy) = i atanh(y)
- asinh(iy) = i asin(y)
- atanh(iy) = i atan(y)
-
-
-
-
-[<a name="p541" href="#p541">page 541</a>] (<a href="#Contents">Contents</a>)
-
-<a name="H" href="#H"><b> Annex H</b></a>
- (informative)
- Language independent arithmetic
-<a name="H.1" href="#H.1"><b> H.1 Introduction</b></a>
-1 This annex documents the extent to which the C language supports the ISO/IEC 10967-1
- standard for language-independent arithmetic (LIA-1). LIA-1 is more general than
- IEC 60559 (<a href="#F">annex F</a>) in that it covers integer and diverse floating-point arithmetics.
-<a name="H.2" href="#H.2"><b> H.2 Types</b></a>
-1 The relevant C arithmetic types meet the requirements of LIA-1 types if an
- implementation adds notification of exceptional arithmetic operations and meets the 1
- unit in the last place (ULP) accuracy requirement (LIA-1 subclause <a href="#5.2.8">5.2.8</a>).
-<a name="H.2.1" href="#H.2.1"><b> H.2.1 Boolean type</b></a>
-1 The LIA-1 data type Boolean is implemented by the C data type bool with values of
- true and false, all from <a href="#7.18"><stdbool.h></a>.
-<a name="H.2.2" href="#H.2.2"><b> H.2.2 Integer types</b></a>
-1 The signed C integer types int, long int, long long int, and the corresponding
- unsigned types are compatible with LIA-1. If an implementation adds support for the
- LIA-1 exceptional values ''integer_overflow'' and ''undefined'', then those types are
- LIA-1 conformant types. C's unsigned integer types are ''modulo'' in the LIA-1 sense
- in that overflows or out-of-bounds results silently wrap. An implementation that defines
- signed integer types as also being modulo need not detect integer overflow, in which case,
- only integer divide-by-zero need be detected.
-2 The parameters for the integer data types can be accessed by the following:
- maxint INT_MAX, LONG_MAX, LLONG_MAX, UINT_MAX, ULONG_MAX,
- ULLONG_MAX
- minint INT_MIN, LONG_MIN, LLONG_MIN
-3 The parameter ''bounded'' is always true, and is not provided. The parameter ''minint''
- is always 0 for the unsigned types, and is not provided for those types.
-
-
-
-
-[<a name="p542" href="#p542">page 542</a>] (<a href="#Contents">Contents</a>)
-
-<a name="H.2.2.1" href="#H.2.2.1"><b> H.2.2.1 Integer operations</b></a>
-1 The integer operations on integer types are the following:
- addI x + y
- subI x - y
- mulI x * y
- divI, divtI x / y
- remI, remtI x % y
- negI -x
- absI abs(x), labs(x), llabs(x)
- eqI x == y
- neqI x != y
- lssI x < y
- leqI x <= y
- gtrI x > y
- geqI x >= y
- where x and y are expressions of the same integer type.
-<a name="H.2.3" href="#H.2.3"><b> H.2.3 Floating-point types</b></a>
-1 The C floating-point types float, double, and long double are compatible with
- LIA-1. If an implementation adds support for the LIA-1 exceptional values
- ''underflow'', ''floating_overflow'', and ''"undefined'', then those types are conformant
- with LIA-1. An implementation that uses IEC 60559 floating-point formats and
- operations (see <a href="#F">annex F</a>) along with IEC 60559 status flags and traps has LIA-1
- conformant types.
-<a name="H.2.3.1" href="#H.2.3.1"><b> H.2.3.1 Floating-point parameters</b></a>
-1 The parameters for a floating point data type can be accessed by the following:
- r FLT_RADIX
- p FLT_MANT_DIG, DBL_MANT_DIG, LDBL_MANT_DIG
- emax FLT_MAX_EXP, DBL_MAX_EXP, LDBL_MAX_EXP
- emin FLT_MIN_EXP, DBL_MIN_EXP, LDBL_MIN_EXP
-2 The derived constants for the floating point types are accessed by the following:
-
-
-[<a name="p543" href="#p543">page 543</a>] (<a href="#Contents">Contents</a>)
-
- fmax FLT_MAX, DBL_MAX, LDBL_MAX
- fminN FLT_MIN, DBL_MIN, LDBL_MIN
- epsilon FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON
- rnd_style FLT_ROUNDS
-<a name="H.2.3.2" href="#H.2.3.2"><b> H.2.3.2 Floating-point operations</b></a>
-1 The floating-point operations on floating-point types are the following:
- addF x + y
- subF x - y
- mulF x * y
- divF x / y
- negF -x
- absF fabsf(x), fabs(x), fabsl(x)
- exponentF 1.f+logbf(x), 1.0+logb(x), 1.L+logbl(x)
- scaleF scalbnf(x, n), scalbn(x, n), scalbnl(x, n),
- scalblnf(x, li), scalbln(x, li), scalblnl(x, li)
- intpartF modff(x, &y), modf(x, &y), modfl(x, &y)
- fractpartF modff(x, &y), modf(x, &y), modfl(x, &y)
- eqF x == y
- neqF x != y
- lssF x < y
- leqF x <= y
- gtrF x > y
- geqF x >= y
- where x and y are expressions of the same floating point type, n is of type int, and li
- is of type long int.
-<a name="H.2.3.3" href="#H.2.3.3"><b> H.2.3.3 Rounding styles</b></a>
-1 The C Standard requires all floating types to use the same radix and rounding style, so
- that only one identifier for each is provided to map to LIA-1.
-2 The FLT_ROUNDS parameter can be used to indicate the LIA-1 rounding styles:
- truncate FLT_ROUNDS == 0
-
-
-[<a name="p544" href="#p544">page 544</a>] (<a href="#Contents">Contents</a>)
-
- nearest FLT_ROUNDS == 1
- other FLT_ROUNDS != 0 && FLT_ROUNDS != 1
- provided that an implementation extends FLT_ROUNDS to cover the rounding style used
- in all relevant LIA-1 operations, not just addition as in C.
-<a name="H.2.4" href="#H.2.4"><b> H.2.4 Type conversions</b></a>
-1 The LIA-1 type conversions are the following type casts:
- cvtI' (->) I (int)i, (long int)i, (long long int)i,
- (unsigned int)i, (unsigned long int)i,
- (unsigned long long int)i
- cvtF (->) I (int)x, (long int)x, (long long int)x,
- (unsigned int)x, (unsigned long int)x,
- (unsigned long long int)x
- cvtI (->) F (float)i, (double)i, (long double)i
- cvtF' (->) F (float)x, (double)x, (long double)x
-2 In the above conversions from floating to integer, the use of (cast)x can be replaced with
- (cast)round(x), (cast)rint(x), (cast)nearbyint(x), (cast)trunc(x),
- (cast)ceil(x), or (cast)floor(x). In addition, C's floating-point to integer
- conversion functions, lrint(), llrint(), lround(), and llround(), can be
- used. They all meet LIA-1's requirements on floating to integer rounding for in-range
- values. For out-of-range values, the conversions shall silently wrap for the modulo types.
-3 The fmod() function is useful for doing silent wrapping to unsigned integer types, e.g.,
- fmod( fabs(rint(x)), 65536.0 ) or (0.0 <= (y = fmod( rint(x),
- 65536.0 )) ? y : 65536.0 + y) will compute an integer value in the range 0.0
- to 65535.0 which can then be cast to unsigned short int. But, the
- remainder() function is not useful for doing silent wrapping to signed integer types,
- e.g., remainder( rint(x), 65536.0 ) will compute an integer value in the
- range -32767.0 to +32768.0 which is not, in general, in the range of signed short
- int.
-4 C's conversions (casts) from floating-point to floating-point can meet LIA-1
- requirements if an implementation uses round-to-nearest (IEC 60559 default).
-5 C's conversions (casts) from integer to floating-point can meet LIA-1 requirements if an
- implementation uses round-to-nearest.
-
-
-
-
-[<a name="p545" href="#p545">page 545</a>] (<a href="#Contents">Contents</a>)
-
-<a name="H.3" href="#H.3"><b> H.3 Notification</b></a>
-1 Notification is the process by which a user or program is informed that an exceptional
- arithmetic operation has occurred. C's operations are compatible with LIA-1 in that C
- allows an implementation to cause a notification to occur when any arithmetic operation
- returns an exceptional value as defined in LIA-1 clause 5.
-<a name="H.3.1" href="#H.3.1"><b> H.3.1 Notification alternatives</b></a>
-1 LIA-1 requires at least the following two alternatives for handling of notifications:
- setting indicators or trap-and-terminate. LIA-1 allows a third alternative: trap-and-
- resume.
-2 An implementation need only support a given notification alternative for the entire
- program. An implementation may support the ability to switch between notification
- alternatives during execution, but is not required to do so. An implementation can
- provide separate selection for each kind of notification, but this is not required.
-3 C allows an implementation to provide notification. C's SIGFPE (for traps) and
- FE_INVALID, FE_DIVBYZERO, FE_OVERFLOW, FE_UNDERFLOW (for indicators)
- can provide LIA-1 notification.
-4 C's signal handlers are compatible with LIA-1. Default handling of SIGFPE can
- provide trap-and-terminate behavior, except for those LIA-1 operations implemented by
- math library function calls. User-provided signal handlers for SIGFPE allow for trap-
- and-resume behavior with the same constraint.
-<a name="H.3.1.1" href="#H.3.1.1"><b> H.3.1.1 Indicators</b></a>
-1 C's <a href="#7.6"><fenv.h></a> status flags are compatible with the LIA-1 indicators.
-2 The following mapping is for floating-point types:
- undefined FE_INVALID, FE_DIVBYZERO
- floating_overflow FE_OVERFLOW
- underflow FE_UNDERFLOW
-3 The floating-point indicator interrogation and manipulation operations are:
- set_indicators feraiseexcept(i)
- clear_indicators feclearexcept(i)
- test_indicators fetestexcept(i)
- current_indicators fetestexcept(FE_ALL_EXCEPT)
- where i is an expression of type int representing a subset of the LIA-1 indicators.
-4 C allows an implementation to provide the following LIA-1 required behavior: at
- program termination if any indicator is set the implementation shall send an unambiguous
-[<a name="p546" href="#p546">page 546</a>] (<a href="#Contents">Contents</a>)
-
- and ''hard to ignore'' message (see LIA-1 subclause <a href="#6.1.2">6.1.2</a>)
-5 LIA-1 does not make the distinction between floating-point and integer for ''undefined''.
- This documentation makes that distinction because <a href="#7.6"><fenv.h></a> covers only the floating-
- point indicators.
-<a name="H.3.1.2" href="#H.3.1.2"><b> H.3.1.2 Traps</b></a>
-1 C is compatible with LIA-1's trap requirements for arithmetic operations, but not for
- math library functions (which are not permitted to invoke a user's signal handler for
- SIGFPE). An implementation can provide an alternative of notification through
- termination with a ''hard-to-ignore'' message (see LIA-1 subclause <a href="#6.1.3">6.1.3</a>).
-2 LIA-1 does not require that traps be precise.
-3 C does require that SIGFPE be the signal corresponding to LIA-1 arithmetic exceptions,
- if there is any signal raised for them.
-4 C supports signal handlers for SIGFPE and allows trapping of LIA-1 arithmetic
- exceptions. When LIA-1 arithmetic exceptions do trap, C's signal-handler mechanism
- allows trap-and-terminate (either default implementation behavior or user replacement for
- it) or trap-and-resume, at the programmer's option.
-
-
-
-
-[<a name="p547" href="#p547">page 547</a>] (<a href="#Contents">Contents</a>)
-
-<a name="I" href="#I"><b> Annex I</b></a>
- (informative)
- Common warnings
-1 An implementation may generate warnings in many situations, none of which are
- specified as part of this International Standard. The following are a few of the more
- common situations.
-2 -- A new struct or union type appears in a function prototype (<a href="#6.2.1">6.2.1</a>, <a href="#6.7.2.3">6.7.2.3</a>).
- -- A block with initialization of an object that has automatic storage duration is jumped
- into (<a href="#6.2.4">6.2.4</a>).
- -- 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 (<a href="#6.3">6.3</a>).
- -- A hexadecimal floating constant cannot be represented exactly in its evaluation format
- (<a href="#6.4.4.2">6.4.4.2</a>).
- -- An integer character constant includes more than one character or a wide character
- constant includes more than one multibyte character (<a href="#6.4.4.4">6.4.4.4</a>).
- -- The characters /* are found in a comment (<a href="#6.4.7">6.4.7</a>).
- -- 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 (<a href="#6.5">6.5</a>).
- -- A function is called but no prototype has been supplied (<a href="#6.5.2.2">6.5.2.2</a>).
- -- 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 (<a href="#6.5.2.2">6.5.2.2</a>).
- -- An object is defined but not used (<a href="#6.7">6.7</a>).
- -- 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
- (<a href="#6.7.2.2">6.7.2.2</a>).
- -- An aggregate has a partly bracketed initialization (<a href="#6.7.8">6.7.8</a>).
- -- A statement cannot be reached (<a href="#6.8">6.8</a>).
- -- A statement with no apparent effect is encountered (<a href="#6.8">6.8</a>).
- -- A constant expression is used as the controlling expression of a selection statement
- (<a href="#6.8.4">6.8.4</a>).
-[<a name="p548" href="#p548">page 548</a>] (<a href="#Contents">Contents</a>)
-
--- An incorrectly formed preprocessing group is encountered while skipping a
- preprocessing group (<a href="#6.10.1">6.10.1</a>).
--- An unrecognized #pragma directive is encountered (<a href="#6.10.6">6.10.6</a>).
-
-
-
-
-[<a name="p549" href="#p549">page 549</a>] (<a href="#Contents">Contents</a>)
-
-<a name="J" href="#J"><b> Annex J</b></a>
- (informative)
- Portability issues
-1 This annex collects some information about portability that appears in this International
- Standard.
-<a name="J.1" href="#J.1"><b> J.1 Unspecified behavior</b></a>
-1 The following are unspecified:
- -- The manner and timing of static initialization (<a href="#5.1.2">5.1.2</a>).
- -- The termination status returned to the hosted environment if the return type of main
- is not compatible with int (<a href="#5.1.2.2.3">5.1.2.2.3</a>).
- -- The behavior of the display device if a printing character is written when the active
- position is at the final position of a line (<a href="#5.2.2">5.2.2</a>).
- -- The behavior of the display device if a backspace character is written when the active
- position is at the initial position of a line (<a href="#5.2.2">5.2.2</a>).
- -- 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 (<a href="#5.2.2">5.2.2</a>).
- -- 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 (<a href="#5.2.2">5.2.2</a>).
- -- How an extended source character that does not correspond to a universal character
- name counts toward the significant initial characters in an external identifier (<a href="#5.2.4.1">5.2.4.1</a>).
- -- Many aspects of the representations of types (<a href="#6.2.6">6.2.6</a>).
- -- The value of padding bytes when storing values in structures or unions (<a href="#6.2.6.1">6.2.6.1</a>).
- -- The values of bytes that correspond to union members other than the one last stored
- into (<a href="#6.2.6.1">6.2.6.1</a>).
- -- The representation used when storing a value in an object that has more than one
- object representation for that value (<a href="#6.2.6.1">6.2.6.1</a>).
- -- The values of any padding bits in integer representations (<a href="#6.2.6.2">6.2.6.2</a>).
- -- Whether certain operators can generate negative zeros and whether a negative zero
- becomes a normal zero when stored in an object (<a href="#6.2.6.2">6.2.6.2</a>).
- -- Whether two string literals result in distinct arrays (<a href="#6.4.5">6.4.5</a>).
- -- 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
-[<a name="p550" href="#p550">page 550</a>] (<a href="#Contents">Contents</a>)
-
- operators (<a href="#6.5">6.5</a>).
--- The order in which the function designator, arguments, and subexpressions within the
- arguments are evaluated in a function call (<a href="#6.5.2.2">6.5.2.2</a>).
--- The order of side effects among compound literal initialization list expressions
- (<a href="#6.5.2.5">6.5.2.5</a>).
--- The order in which the operands of an assignment operator are evaluated (<a href="#6.5.16">6.5.16</a>).
--- The alignment of the addressable storage unit allocated to hold a bit-field (<a href="#6.7.2.1">6.7.2.1</a>).
--- Whether a call to an inline function uses the inline definition or the external definition
- of the function (<a href="#6.7.4">6.7.4</a>).
--- Whether or not a size expression is evaluated when it is part of the operand of a
- sizeof operator and changing the value of the size expression would not affect the
- result of the operator (<a href="#6.7.6.2">6.7.6.2</a>).
--- The order in which any side effects occur among the initialization list expressions in
- an initializer (<a href="#6.7.9">6.7.9</a>).
--- The layout of storage for function parameters (<a href="#6.9.1">6.9.1</a>).
--- 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 the next preprocessing token from the source file is again a (, whether that
- is considered a nested replacement (<a href="#6.10.3">6.10.3</a>).
--- The order in which # and ## operations are evaluated during macro substitution
- (<a href="#6.10.3.2">6.10.3.2</a>, <a href="#6.10.3.3">6.10.3.3</a>).
--- The state of the floating-point status flags when execution passes from a part of the *
- program translated with FENV_ACCESS ''off'' to a part translated with
- FENV_ACCESS ''on'' (<a href="#7.6.1">7.6.1</a>).
--- The order in which feraiseexcept raises floating-point exceptions, except as
- stated in <a href="#F.8.6">F.8.6</a> (<a href="#7.6.2.3">7.6.2.3</a>).
--- Whether math_errhandling is a macro or an identifier with external linkage
- (<a href="#7.12">7.12</a>).
--- The results of the frexp functions when the specified value is not a floating-point
- number (<a href="#7.12.6.4">7.12.6.4</a>).
--- The numeric result of the ilogb functions when the correct value is outside the
- range of the return type (<a href="#7.12.6.5">7.12.6.5</a>, <a href="#F.10.3.5">F.10.3.5</a>).
--- The result of rounding when the value is out of range (<a href="#7.12.9.5">7.12.9.5</a>, <a href="#7.12.9.7">7.12.9.7</a>, <a href="#F.10.6.5">F.10.6.5</a>).
-
-
-[<a name="p551" href="#p551">page 551</a>] (<a href="#Contents">Contents</a>)
-
--- The value stored by the remquo functions in the object pointed to by quo when y is
- zero (<a href="#7.12.10.3">7.12.10.3</a>).
--- Whether a comparison macro argument that is represented in a format wider than its
- semantic type is converted to the semantic type (<a href="#7.12.14">7.12.14</a>).
--- Whether setjmp is a macro or an identifier with external linkage (<a href="#7.13">7.13</a>).
--- Whether va_copy and va_end are macros or identifiers with external linkage
- (<a href="#7.16.1">7.16.1</a>).
--- The hexadecimal digit before the decimal point when a non-normalized floating-point
- number is printed with an a or A conversion specifier (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a>).
--- The value of the file position indicator after a successful call to the ungetc function
- for a text stream, or the ungetwc function for any stream, until all pushed-back
- characters are read or discarded (<a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.28.3.10">7.28.3.10</a>).
--- The details of the value stored by the fgetpos function (<a href="#7.21.9.1">7.21.9.1</a>).
--- The details of the value returned by the ftell function for a text stream (<a href="#7.21.9.4">7.21.9.4</a>).
--- Whether the strtod, strtof, strtold, wcstod, wcstof, and wcstold
- functions convert a minus-signed sequence to a negative number directly or by
- negating the value resulting from converting the corresponding unsigned sequence
- (<a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>).
--- The order and contiguity of storage allocated by successive calls to the calloc,
- malloc, and realloc functions (<a href="#7.22.3">7.22.3</a>).
--- The amount of storage allocated by a successful call to the calloc, malloc, or
- realloc function when 0 bytes was requested (<a href="#7.22.3">7.22.3</a>).
--- Which of two elements that compare as equal is matched by the bsearch function
- (<a href="#7.22.5.1">7.22.5.1</a>).
--- The order of two elements that compare as equal in an array sorted by the qsort
- function (<a href="#7.22.5.2">7.22.5.2</a>).
--- The encoding of the calendar time returned by the time function (<a href="#7.26.2.4">7.26.2.4</a>).
--- The characters stored by the strftime or wcsftime function if any of the time
- values being converted is outside the normal range (<a href="#7.26.3.5">7.26.3.5</a>, <a href="#7.28.5.1">7.28.5.1</a>).
--- The conversion state after an encoding error occurs (<a href="#7.28.6.3.2">7.28.6.3.2</a>, <a href="#7.28.6.3.3">7.28.6.3.3</a>, <a href="#7.28.6.4.1">7.28.6.4.1</a>,
- <a href="#7.28.6.4.2">7.28.6.4.2</a>,
--- The resulting value when the ''invalid'' floating-point exception is raised during
- IEC 60559 floating to integer conversion (<a href="#F.4">F.4</a>).
-
-
-
-[<a name="p552" href="#p552">page 552</a>] (<a href="#Contents">Contents</a>)
-
- -- Whether conversion of non-integer IEC 60559 floating values to integer raises the
- ''inexact'' floating-point exception (<a href="#F.4">F.4</a>).
- -- Whether or when library functions in <a href="#7.12"><math.h></a> raise the ''inexact'' floating-point
- exception in an IEC 60559 conformant implementation (<a href="#F.10">F.10</a>).
- -- Whether or when library functions in <a href="#7.12"><math.h></a> raise an undeserved ''underflow''
- floating-point exception in an IEC 60559 conformant implementation (<a href="#F.10">F.10</a>).
- -- The exponent value stored by frexp for a NaN or infinity (<a href="#F.10.3.4">F.10.3.4</a>).
- -- The numeric result returned by the lrint, llrint, lround, and llround
- functions if the rounded value is outside the range of the return type (<a href="#F.10.6.5">F.10.6.5</a>,
- <a href="#F.10.6.7">F.10.6.7</a>).
- -- The sign of one part of the complex result of several math functions for certain
- special cases in IEC 60559 compatible implementations (<a href="#G.6.1.1">G.6.1.1</a>, <a href="#G.6.2.2">G.6.2.2</a>, <a href="#G.6.2.3">G.6.2.3</a>,
- <a href="#G.6.2.4">G.6.2.4</a>, <a href="#G.6.2.5">G.6.2.5</a>, <a href="#G.6.2.6">G.6.2.6</a>, <a href="#G.6.3.1">G.6.3.1</a>, <a href="#G.6.4.2">G.6.4.2</a>).
-<a name="J.2" href="#J.2"><b> J.2 Undefined behavior</b></a>
-1 The behavior is undefined in the following circumstances:
- -- A ''shall'' or ''shall not'' requirement that appears outside of a constraint is violated
- (clause 4).
- -- 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 (<a href="#5.1.1.2">5.1.1.2</a>).
- -- Token concatenation produces a character sequence matching the syntax of a
- universal character name (<a href="#5.1.1.2">5.1.1.2</a>).
- -- A program in a hosted environment does not define a function named main using one
- of the specified forms (<a href="#5.1.2.2.1">5.1.2.2.1</a>).
- -- The execution of a program contains a data race (<a href="#5.1.2.4">5.1.2.4</a>).
- -- A character not in the basic source character set is encountered in a source file, except
- in an identifier, a character constant, a string literal, a header name, a comment, or a
- preprocessing token that is never converted to a token (<a href="#5.2.1">5.2.1</a>).
- -- An identifier, comment, string literal, character constant, or header name contains an
- invalid multibyte character or does not begin and end in the initial shift state (<a href="#5.2.1.2">5.2.1.2</a>).
- -- The same identifier has both internal and external linkage in the same translation unit
- (<a href="#6.2.2">6.2.2</a>).
- -- An object is referred to outside of its lifetime (<a href="#6.2.4">6.2.4</a>).
-
-
-
-[<a name="p553" href="#p553">page 553</a>] (<a href="#Contents">Contents</a>)
-
--- The value of a pointer to an object whose lifetime has ended is used (<a href="#6.2.4">6.2.4</a>).
--- The value of an object with automatic storage duration is used while it is
- indeterminate (<a href="#6.2.4">6.2.4</a>, <a href="#6.7.9">6.7.9</a>, <a href="#6.8">6.8</a>).
--- A trap representation is read by an lvalue expression that does not have character type
- (<a href="#6.2.6.1">6.2.6.1</a>).
--- A trap representation is produced by a side effect that modifies any part of the object
- using an lvalue expression that does not have character type (<a href="#6.2.6.1">6.2.6.1</a>).
--- The operands to certain operators are such that they could produce a negative zero
- result, but the implementation does not support negative zeros (<a href="#6.2.6.2">6.2.6.2</a>).
--- Two declarations of the same object or function specify types that are not compatible
- (<a href="#6.2.7">6.2.7</a>).
--- A program requires the formation of a composite type from a variable length array
- type whose size is specified by an expression that is not evaluated (<a href="#6.2.7">6.2.7</a>).
--- Conversion to or from an integer type produces a value outside the range that can be
- represented (<a href="#6.3.1.4">6.3.1.4</a>).
--- Demotion of one real floating type to another produces a value outside the range that
- can be represented (<a href="#6.3.1.5">6.3.1.5</a>).
--- An lvalue does not designate an object when evaluated (<a href="#6.3.2.1">6.3.2.1</a>).
--- A non-array lvalue with an incomplete type is used in a context that requires the value
- of the designated object (<a href="#6.3.2.1">6.3.2.1</a>).
--- An lvalue designating an object of automatic storage duration that could have been
- declared with the register storage class is used in a context that requires the value
- of the designated object, but the object is uninitialized. (<a href="#6.3.2.1">6.3.2.1</a>).
--- An lvalue having array type is converted to a pointer to the initial element of the
- array, and the array object has register storage class (<a href="#6.3.2.1">6.3.2.1</a>).
--- An attempt is made to use the value of a void expression, or an implicit or explicit
- conversion (except to void) is applied to a void expression (<a href="#6.3.2.2">6.3.2.2</a>).
--- Conversion of a pointer to an integer type produces a value outside the range that can
- be represented (<a href="#6.3.2.3">6.3.2.3</a>).
--- Conversion between two pointer types produces a result that is incorrectly aligned
- (<a href="#6.3.2.3">6.3.2.3</a>).
--- A pointer is used to call a function whose type is not compatible with the referenced
- type (<a href="#6.3.2.3">6.3.2.3</a>).
-
-
-
-[<a name="p554" href="#p554">page 554</a>] (<a href="#Contents">Contents</a>)
-
--- An unmatched ' or " character is encountered on a logical source line during
- tokenization (<a href="#6.4">6.4</a>).
--- A reserved keyword token is used in translation phase 7 or 8 for some purpose other
- than as a keyword (<a href="#6.4.1">6.4.1</a>).
--- A universal character name in an identifier does not designate a character whose
- encoding falls into one of the specified ranges (<a href="#6.4.2.1">6.4.2.1</a>).
--- The initial character of an identifier is a universal character name designating a digit
- (<a href="#6.4.2.1">6.4.2.1</a>).
--- Two identifiers differ only in nonsignificant characters (<a href="#6.4.2.1">6.4.2.1</a>).
--- The identifier __func__ is explicitly declared (<a href="#6.4.2.2">6.4.2.2</a>).
--- The program attempts to modify a string literal (<a href="#6.4.5">6.4.5</a>).
--- The characters ', \, ", //, or /* occur in the sequence between the < and >
- delimiters, or the characters ', \, //, or /* occur in the sequence between the "
- delimiters, in a header name preprocessing token (<a href="#6.4.7">6.4.7</a>).
--- 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 (<a href="#6.5">6.5</a>).
--- An exceptional condition occurs during the evaluation of an expression (<a href="#6.5">6.5</a>).
--- An object has its stored value accessed other than by an lvalue of an allowable type
- (<a href="#6.5">6.5</a>).
--- For a call to a function without a function prototype in scope, the number of *
- arguments does not equal the number of parameters (<a href="#6.5.2.2">6.5.2.2</a>).
--- For call to a function without a function prototype in scope where the function is
- defined with a function prototype, either the prototype ends with an ellipsis or the
- types of the arguments after promotion are not compatible with the types of the
- parameters (<a href="#6.5.2.2">6.5.2.2</a>).
--- For a call to a function without a function prototype in scope where the function is not
- defined with a function prototype, the types of the arguments after promotion are not
- compatible with those of the parameters after promotion (with certain exceptions)
- (<a href="#6.5.2.2">6.5.2.2</a>).
--- A function is defined with a type that is not compatible with the type (of the
- expression) pointed to by the expression that denotes the called function (<a href="#6.5.2.2">6.5.2.2</a>).
--- A member of an atomic structure or union is accessed (<a href="#6.5.2.3">6.5.2.3</a>).
--- The operand of the unary * operator has an invalid value (<a href="#6.5.3.2">6.5.3.2</a>).
-
-
-[<a name="p555" href="#p555">page 555</a>] (<a href="#Contents">Contents</a>)
-
--- A pointer is converted to other than an integer or pointer type (<a href="#6.5.4">6.5.4</a>).
--- The value of the second operand of the / or % operator is zero (<a href="#6.5.5">6.5.5</a>).
--- Addition or subtraction of a pointer into, or just beyond, an array object and an
- integer type produces a result that does not point into, or just beyond, the same array
- object (<a href="#6.5.6">6.5.6</a>).
--- Addition or subtraction of a pointer into, or just beyond, an array object and an
- integer type produces a result that points just beyond the array object and is used as
- the operand of a unary * operator that is evaluated (<a href="#6.5.6">6.5.6</a>).
--- Pointers that do not point into, or just beyond, the same array object are subtracted
- (<a href="#6.5.6">6.5.6</a>).
--- An array subscript is out of range, even if an object is apparently accessible with the
- given subscript (as in the lvalue expression a[1][7] given the declaration int
- a[4][5]) (<a href="#6.5.6">6.5.6</a>).
--- The result of subtracting two pointers is not representable in an object of type
- ptrdiff_t (<a href="#6.5.6">6.5.6</a>).
--- An expression is shifted by a negative number or by an amount greater than or equal
- to the width of the promoted expression (<a href="#6.5.7">6.5.7</a>).
--- An expression having signed promoted type is left-shifted and either the value of the
- expression is negative or the result of shifting would be not be representable in the
- promoted type (<a href="#6.5.7">6.5.7</a>).
--- Pointers that do not point to the same aggregate or union (nor just beyond the same
- array object) are compared using relational operators (<a href="#6.5.8">6.5.8</a>).
--- An object is assigned to an inexactly overlapping object or to an exactly overlapping
- object with incompatible type (<a href="#6.5.16.1">6.5.16.1</a>).
--- An expression that is required to be an integer constant expression does not have an
- integer type; has operands that are not integer constants, enumeration constants,
- character constants, sizeof expressions whose results are integer constants, or
- immediately-cast floating constants; or contains casts (outside operands to sizeof
- operators) other than conversions of arithmetic types to integer types (<a href="#6.6">6.6</a>).
--- A constant expression in an initializer is not, or does not evaluate to, one of the
- following: an arithmetic constant expression, a null pointer constant, an address
- constant, or an address constant for a complete object type plus or minus an integer
- constant expression (<a href="#6.6">6.6</a>).
--- An arithmetic constant expression does not have arithmetic type; has operands that
- are not integer constants, floating constants, enumeration constants, character
- constants, or sizeof expressions; or contains casts (outside operands to sizeof
-
-[<a name="p556" href="#p556">page 556</a>] (<a href="#Contents">Contents</a>)
-
- operators) other than conversions of arithmetic types to arithmetic types (<a href="#6.6">6.6</a>).
--- The value of an object is accessed by an array-subscript [], member-access . or ->,
- address &, or indirection * operator or a pointer cast in creating an address constant
- (<a href="#6.6">6.6</a>).
--- An identifier for an object is declared with no linkage and the type of the object is
- incomplete after its declarator, or after its init-declarator if it has an initializer (<a href="#6.7">6.7</a>).
--- A function is declared at block scope with an explicit storage-class specifier other
- than extern (<a href="#6.7.1">6.7.1</a>).
--- A structure or union is defined as containing no named members, no anonymous
- structures, and no anonymous unions (<a href="#6.7.2.1">6.7.2.1</a>).
--- An attempt is made to access, or generate a pointer to just past, a flexible array
- member of a structure when the referenced object provides no elements for that array
- (<a href="#6.7.2.1">6.7.2.1</a>).
--- When the complete type is needed, an incomplete structure or union type is not
- completed in the same scope by another declaration of the tag that defines the content
- (<a href="#6.7.2.3">6.7.2.3</a>).
--- An attempt is made to modify an object defined with a const-qualified type through
- use of an lvalue with non-const-qualified type (<a href="#6.7.3">6.7.3</a>).
--- 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 (<a href="#6.7.3">6.7.3</a>).
--- The specification of a function type includes any type qualifiers (<a href="#6.7.3">6.7.3</a>). *
--- Two qualified types that are required to be compatible do not have the identically
- qualified version of a compatible type (<a href="#6.7.3">6.7.3</a>).
--- An object which has been modified is accessed through a restrict-qualified pointer to
- a const-qualified type, or through a restrict-qualified pointer and another pointer that
- are not both based on the same object (<a href="#6.7.3.1">6.7.3.1</a>).
--- A restrict-qualified pointer is assigned a value based on another restricted pointer
- whose associated block neither began execution before the block associated with this
- pointer, nor ended before the assignment (<a href="#6.7.3.1">6.7.3.1</a>).
--- A function with external linkage is declared with an inline function specifier, but is
- not also defined in the same translation unit (<a href="#6.7.4">6.7.4</a>).
--- A function declared with a _Noreturn function specifier returns to its caller (<a href="#6.7.4">6.7.4</a>).
--- The definition of an object has an alignment specifier and another declaration of that
- object has a different alignment specifier (<a href="#6.7.5">6.7.5</a>).
-
-
-[<a name="p557" href="#p557">page 557</a>] (<a href="#Contents">Contents</a>)
-
--- Declarations of an object in different translation units have different alignment
- specifiers (<a href="#6.7.5">6.7.5</a>).
--- Two pointer types that are required to be compatible are not identically qualified, or
- are not pointers to compatible types (<a href="#6.7.6.1">6.7.6.1</a>).
--- The size expression in an array declaration is not a constant expression and evaluates
- at program execution time to a nonpositive value (<a href="#6.7.6.2">6.7.6.2</a>).
--- In a context requiring two array types to be compatible, they do not have compatible
- element types, or their size specifiers evaluate to unequal values (<a href="#6.7.6.2">6.7.6.2</a>).
--- A declaration of an array parameter includes the keyword static within the [ and
- ] and the corresponding argument does not provide access to the first element of an
- array with at least the specified number of elements (<a href="#6.7.6.3">6.7.6.3</a>).
--- A storage-class specifier or type qualifier modifies the keyword void as a function
- parameter type list (<a href="#6.7.6.3">6.7.6.3</a>).
--- In a context requiring two function types to be compatible, they do not have
- compatible return types, or their parameters disagree in use of the ellipsis terminator
- or the number and type of parameters (after default argument promotion, when there
- is no parameter type list or when one type is specified by a function definition with an
- identifier list) (<a href="#6.7.6.3">6.7.6.3</a>).
--- The value of an unnamed member of a structure or union is used (<a href="#6.7.9">6.7.9</a>).
--- The initializer for a scalar is neither a single expression nor a single expression
- enclosed in braces (<a href="#6.7.9">6.7.9</a>).
--- The initializer for a structure or union object that has automatic storage duration is
- neither an initializer list nor a single expression that has compatible structure or union
- type (<a href="#6.7.9">6.7.9</a>).
--- The initializer for an aggregate or union, other than an array initialized by a string
- literal, is not a brace-enclosed list of initializers for its elements or members (<a href="#6.7.9">6.7.9</a>).
--- An identifier with external linkage is used, but in the program there does not exist
- exactly one external definition for the identifier, or the identifier is not used and there
- exist multiple external definitions for the identifier (<a href="#6.9">6.9</a>).
--- A function definition includes an identifier list, but the types of the parameters are not
- declared in a following declaration list (<a href="#6.9.1">6.9.1</a>).
--- An adjusted parameter type in a function definition is not a complete object type
- (<a href="#6.9.1">6.9.1</a>).
--- A function that accepts a variable number of arguments is defined without a
- parameter type list that ends with the ellipsis notation (<a href="#6.9.1">6.9.1</a>).
-
-[<a name="p558" href="#p558">page 558</a>] (<a href="#Contents">Contents</a>)
-
--- The } that terminates a function is reached, and the value of the function call is used
- by the caller (<a href="#6.9.1">6.9.1</a>).
--- An identifier for an object with internal linkage and an incomplete type is declared
- with a tentative definition (<a href="#6.9.2">6.9.2</a>).
--- The token defined is generated during the expansion of a #if or #elif
- preprocessing directive, or the use of the defined unary operator does not match
- one of the two specified forms prior to macro replacement (<a href="#6.10.1">6.10.1</a>).
--- The #include preprocessing directive that results after expansion does not match
- one of the two header name forms (<a href="#6.10.2">6.10.2</a>).
--- The character sequence in an #include preprocessing directive does not start with a
- letter (<a href="#6.10.2">6.10.2</a>).
--- There are sequences of preprocessing tokens within the list of macro arguments that
- would otherwise act as preprocessing directives (<a href="#6.10.3">6.10.3</a>).
--- The result of the preprocessing operator # is not a valid character string literal
- (<a href="#6.10.3.2">6.10.3.2</a>).
--- The result of the preprocessing operator ## is not a valid preprocessing token
- (<a href="#6.10.3.3">6.10.3.3</a>).
--- The #line preprocessing directive that results after expansion does not match one of
- the two well-defined forms, or its digit sequence specifies zero or a number greater
- than 2147483647 (<a href="#6.10.4">6.10.4</a>).
--- A non-STDC #pragma preprocessing directive that is documented as causing
- translation failure or some other form of undefined behavior is encountered (<a href="#6.10.6">6.10.6</a>).
--- A #pragma STDC preprocessing directive does not match one of the well-defined
- forms (<a href="#6.10.6">6.10.6</a>).
--- The name of a predefined macro, or the identifier defined, is the subject of a
- #define or #undef preprocessing directive (<a href="#6.10.8">6.10.8</a>).
--- An attempt is made to copy an object to an overlapping object by use of a library
- function, other than as explicitly allowed (e.g., memmove) (clause 7).
--- 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 (<a href="#7.1.2">7.1.2</a>).
--- A header is included within an external declaration or definition (<a href="#7.1.2">7.1.2</a>).
--- A function, object, type, or macro that is specified as being declared or defined by
- some standard header is used before any header that declares or defines it is included
- (<a href="#7.1.2">7.1.2</a>).
-
-[<a name="p559" href="#p559">page 559</a>] (<a href="#Contents">Contents</a>)
-
--- A standard header is included while a macro is defined with the same name as a
- keyword (<a href="#7.1.2">7.1.2</a>).
--- The program attempts to declare a library function itself, rather than via a standard
- header, but the declaration does not have external linkage (<a href="#7.1.2">7.1.2</a>).
--- The program declares or defines a reserved identifier, other than as allowed by <a href="#7.1.4">7.1.4</a>
- (<a href="#7.1.3">7.1.3</a>).
--- The program removes the definition of a macro whose name begins with an
- underscore and either an uppercase letter or another underscore (<a href="#7.1.3">7.1.3</a>).
--- An argument to a library function has an invalid value or a type not expected by a
- function with variable number of arguments (<a href="#7.1.4">7.1.4</a>).
--- The pointer passed to a library function array parameter does not have a value such
- that all address computations and object accesses are valid (<a href="#7.1.4">7.1.4</a>).
--- The macro definition of assert is suppressed in order to access an actual function
- (<a href="#7.2">7.2</a>).
--- The argument to the assert macro does not have a scalar type (<a href="#7.2">7.2</a>).
--- The CX_LIMITED_RANGE, FENV_ACCESS, or FP_CONTRACT pragma is used in
- any context other than outside all external declarations or preceding all explicit
- declarations and statements inside a compound statement (<a href="#7.3.4">7.3.4</a>, <a href="#7.6.1">7.6.1</a>, <a href="#7.12.2">7.12.2</a>).
--- The value of an argument to a character handling function is neither equal to the value
- of EOF nor representable as an unsigned char (<a href="#7.4">7.4</a>).
--- A macro definition of errno is suppressed in order to access an actual object, or the
- program defines an identifier with the name errno (<a href="#7.5">7.5</a>).
--- Part of the program tests floating-point status flags, sets floating-point control modes,
- or runs under non-default mode settings, but was translated with the state for the
- FENV_ACCESS pragma ''off'' (<a href="#7.6.1">7.6.1</a>).
--- The exception-mask argument for one of the functions that provide access to the
- floating-point status flags has a nonzero value not obtained by bitwise OR of the
- floating-point exception macros (<a href="#7.6.2">7.6.2</a>).
--- The fesetexceptflag function is used to set floating-point status flags that were
- not specified in the call to the fegetexceptflag function that provided the value
- of the corresponding fexcept_t object (<a href="#7.6.2.4">7.6.2.4</a>).
--- The argument to fesetenv or feupdateenv is neither an object set by a call to
- fegetenv or feholdexcept, nor is it an environment macro (<a href="#7.6.4.3">7.6.4.3</a>, <a href="#7.6.4.4">7.6.4.4</a>).
--- The value of the result of an integer arithmetic or conversion function cannot be
- represented (<a href="#7.8.2.1">7.8.2.1</a>, <a href="#7.8.2.2">7.8.2.2</a>, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.22.6.1">7.22.6.1</a>, <a href="#7.22.6.2">7.22.6.2</a>, <a href="#7.22.1">7.22.1</a>).
-
-[<a name="p560" href="#p560">page 560</a>] (<a href="#Contents">Contents</a>)
-
--- The program modifies the string pointed to by the value returned by the setlocale
- function (<a href="#7.11.1.1">7.11.1.1</a>).
--- The program modifies the structure pointed to by the value returned by the
- localeconv function (<a href="#7.11.2.1">7.11.2.1</a>).
--- A macro definition of math_errhandling is suppressed or the program defines
- an identifier with the name math_errhandling (<a href="#7.12">7.12</a>).
--- An argument to a floating-point classification or comparison macro is not of real
- floating type (<a href="#7.12.3">7.12.3</a>, <a href="#7.12.14">7.12.14</a>).
--- A macro definition of setjmp is suppressed in order to access an actual function, or
- the program defines an external identifier with the name setjmp (<a href="#7.13">7.13</a>).
--- An invocation of the setjmp macro occurs other than in an allowed context
- (<a href="#7.13.2.1">7.13.2.1</a>).
--- The longjmp function is invoked to restore a nonexistent environment (<a href="#7.13.2.1">7.13.2.1</a>).
--- After a longjmp, there is an attempt to access the value of an object of automatic
- storage duration that does not have volatile-qualified type, local to the function
- containing the invocation of the corresponding setjmp macro, that was changed
- between the setjmp invocation and longjmp call (<a href="#7.13.2.1">7.13.2.1</a>).
--- The program specifies an invalid pointer to a signal handler function (<a href="#7.14.1.1">7.14.1.1</a>).
--- A signal handler returns when the signal corresponded to a computational exception
- (<a href="#7.14.1.1">7.14.1.1</a>).
--- A signal occurs as the result of calling the abort or raise function, and the signal
- handler calls the raise function (<a href="#7.14.1.1">7.14.1.1</a>).
--- A signal occurs other than as the result of calling the abort or raise function, and
- the signal handler refers to an object with static or thread storage duration that is not a
- lock-free atomic object other than by assigning a value to an object declared as
- volatile sig_atomic_t, or calls any function in the standard library other
- than the abort function, the _Exit function, the quick_exit function, or the
- signal function (for the same signal number) (<a href="#7.14.1.1">7.14.1.1</a>).
--- The value of errno is referred to after a signal occurred other than as the result of
- calling the abort or raise function and the corresponding signal handler obtained
- a SIG_ERR return from a call to the signal function (<a href="#7.14.1.1">7.14.1.1</a>).
--- A signal is generated by an asynchronous signal handler (<a href="#7.14.1.1">7.14.1.1</a>).
--- A function with a variable number of arguments attempts to access its varying
- arguments other than through a properly declared and initialized va_list object, or
- before the va_start macro is invoked (<a href="#7.16">7.16</a>, <a href="#7.16.1.1">7.16.1.1</a>, <a href="#7.16.1.4">7.16.1.4</a>).
-
-[<a name="p561" href="#p561">page 561</a>] (<a href="#Contents">Contents</a>)
-
--- The macro va_arg is invoked using the parameter ap that was passed to a function
- that invoked the macro va_arg with the same parameter (<a href="#7.16">7.16</a>).
--- A macro definition of va_start, va_arg, va_copy, or va_end is suppressed in
- order to access an actual function, or the program defines an external identifier with
- the name va_copy or va_end (<a href="#7.16.1">7.16.1</a>).
--- The va_start or va_copy macro is invoked without a corresponding invocation
- of the va_end macro in the same function, or vice versa (<a href="#7.16.1">7.16.1</a>, <a href="#7.16.1.2">7.16.1.2</a>, <a href="#7.16.1.3">7.16.1.3</a>,
- <a href="#7.16.1.4">7.16.1.4</a>).
--- The type parameter to the va_arg macro is not such that a pointer to an object of
- that type can be obtained simply by postfixing a * (<a href="#7.16.1.1">7.16.1.1</a>).
--- The va_arg macro is invoked when there is no actual next argument, or with a
- specified type that is not compatible with the promoted type of the actual next
- argument, with certain exceptions (<a href="#7.16.1.1">7.16.1.1</a>).
--- The va_copy or va_start macro is called to initialize a va_list that was
- previously initialized by either macro without an intervening invocation of the
- va_end macro for the same va_list (<a href="#7.16.1.2">7.16.1.2</a>, <a href="#7.16.1.4">7.16.1.4</a>).
--- The parameter parmN of a va_start macro is declared with the register
- storage class, with a function or array type, or with a type that is not compatible with
- the type that results after application of the default argument promotions (<a href="#7.16.1.4">7.16.1.4</a>).
--- The member designator parameter of an offsetof macro is an invalid right
- operand of the . operator for the type parameter, or designates a bit-field (<a href="#7.19">7.19</a>).
--- The argument in an instance of one of the integer-constant macros is not a decimal,
- octal, or hexadecimal constant, or it has a value that exceeds the limits for the
- corresponding type (<a href="#7.20.4">7.20.4</a>).
--- A byte input/output function is applied to a wide-oriented stream, or a wide character
- input/output function is applied to a byte-oriented stream (<a href="#7.21.2">7.21.2</a>).
--- Use is made of any portion of a file beyond the most recent wide character written to
- a wide-oriented stream (<a href="#7.21.2">7.21.2</a>).
--- The value of a pointer to a FILE object is used after the associated file is closed
- (<a href="#7.21.3">7.21.3</a>).
--- The stream for the fflush function points to an input stream or to an update stream
- in which the most recent operation was input (<a href="#7.21.5.2">7.21.5.2</a>).
--- The string pointed to by the mode argument in a call to the fopen function does not
- exactly match one of the specified character sequences (<a href="#7.21.5.3">7.21.5.3</a>).
--- 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
-[<a name="p562" href="#p562">page 562</a>] (<a href="#Contents">Contents</a>)
-
- operation on an update stream is followed by an output operation with an intervening
- call to a file positioning function (<a href="#7.21.5.3">7.21.5.3</a>).
--- An attempt is made to use the contents of the array that was supplied in a call to the
- setvbuf function (<a href="#7.21.5.6">7.21.5.6</a>).
--- There are insufficient arguments for the format in a call to one of the formatted
- input/output functions, or an argument does not have an appropriate type (<a href="#7.21.6.1">7.21.6.1</a>,
- <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>).
--- The format in a call to one of the formatted input/output functions or to the
- strftime or wcsftime function is not a valid multibyte character sequence that
- begins and ends in its initial shift state (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.26.3.5">7.26.3.5</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>,
- <a href="#7.28.5.1">7.28.5.1</a>).
--- In a call to one of the formatted output functions, a precision appears with a
- conversion specifier other than those described (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a>).
--- A conversion specification for a formatted output function uses an asterisk to denote
- an argument-supplied field width or precision, but the corresponding argument is not
- provided (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a>).
--- A conversion specification for a formatted output function uses a # or 0 flag with a
- conversion specifier other than those described (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a>).
--- A conversion specification for one of the formatted input/output functions uses a
- length modifier with a conversion specifier other than those described (<a href="#7.21.6.1">7.21.6.1</a>,
- <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>).
--- An s conversion specifier is encountered by one of the formatted output functions,
- and the argument is missing the null terminator (unless a precision is specified that
- does not require null termination) (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a>).
--- An n conversion specification for one of the formatted input/output functions includes
- any flags, an assignment-suppressing character, a field width, or a precision (<a href="#7.21.6.1">7.21.6.1</a>,
- <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>).
--- A % conversion specifier is encountered by one of the formatted input/output
- functions, but the complete conversion specification is not exactly %% (<a href="#7.21.6.1">7.21.6.1</a>,
- <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>).
--- An invalid conversion specification is found in the format for one of the formatted
- input/output functions, or the strftime or wcsftime function (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>,
- <a href="#7.26.3.5">7.26.3.5</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#7.28.5.1">7.28.5.1</a>).
--- The number of characters transmitted by a formatted output function is greater than
- INT_MAX (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.3">7.21.6.3</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.10">7.21.6.10</a>).
-
-
-[<a name="p563" href="#p563">page 563</a>] (<a href="#Contents">Contents</a>)
-
--- The result of a conversion by one of the formatted input functions cannot be
- represented in the corresponding object, or the receiving object does not have an
- appropriate type (<a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>).
--- A c, s, or [ conversion specifier is encountered by one of the formatted input
- functions, and the array pointed to by the corresponding argument is not large enough
- to accept the input sequence (and a null terminator if the conversion specifier is s or
- [) (<a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>).
--- A c, s, or [ conversion specifier with an l qualifier is encountered by one of the
- formatted input functions, but the input is not a valid multibyte character sequence
- that begins in the initial shift state (<a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>).
--- The input item for a %p conversion by one of the formatted input functions is not a
- value converted earlier during the same program execution (<a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>).
--- The vfprintf, vfscanf, vprintf, vscanf, vsnprintf, vsprintf,
- vsscanf, vfwprintf, vfwscanf, vswprintf, vswscanf, vwprintf, or
- vwscanf function is called with an improperly initialized va_list argument, or
- the argument is used (other than in an invocation of va_end) after the function
- returns (<a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#7.21.6.10">7.21.6.10</a>, <a href="#7.21.6.11">7.21.6.11</a>, <a href="#7.21.6.12">7.21.6.12</a>, <a href="#7.21.6.13">7.21.6.13</a>, <a href="#7.21.6.14">7.21.6.14</a>,
- <a href="#7.28.2.5">7.28.2.5</a>, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.7">7.28.2.7</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.9">7.28.2.9</a>, <a href="#7.28.2.10">7.28.2.10</a>).
--- The contents of the array supplied in a call to the fgets or fgetws function are
- used after a read error occurred (<a href="#7.21.7.2">7.21.7.2</a>, <a href="#7.28.3.2">7.28.3.2</a>).
--- The file position indicator for a binary stream is used after a call to the ungetc
- function where its value was zero before the call (<a href="#7.21.7.10">7.21.7.10</a>).
--- The file position indicator for a stream is used after an error occurred during a call to
- the fread or fwrite function (<a href="#7.21.8.1">7.21.8.1</a>, <a href="#7.21.8.2">7.21.8.2</a>).
--- A partial element read by a call to the fread function is used (<a href="#7.21.8.1">7.21.8.1</a>).
--- 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 (<a href="#7.21.9.2">7.21.9.2</a>).
--- 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
- (<a href="#7.21.9.3">7.21.9.3</a>).
--- A non-null pointer returned by a call to the calloc, malloc, or realloc function
- with a zero requested size is used to access an object (<a href="#7.22.3">7.22.3</a>).
--- The value of a pointer that refers to space deallocated by a call to the free or
- realloc function is used (<a href="#7.22.3">7.22.3</a>).
-
-
-[<a name="p564" href="#p564">page 564</a>] (<a href="#Contents">Contents</a>)
-
--- The alignment requested of the aligned_alloc function is not valid or not
- supported by the implementation, or the size requested is not an integral multiple of
- the alignment (<a href="#7.22.3.1">7.22.3.1</a>).
--- The pointer argument to the free or realloc function does not match a pointer
- earlier returned by a memory management function, or the space has been deallocated
- by a call to free or realloc (<a href="#7.22.3.3">7.22.3.3</a>, <a href="#7.22.3.5">7.22.3.5</a>).
--- The value of the object allocated by the malloc function is used (<a href="#7.22.3.4">7.22.3.4</a>).
--- The value of any bytes in a new object allocated by the realloc function beyond
- the size of the old object are used (<a href="#7.22.3.5">7.22.3.5</a>).
--- The program calls the exit or quick_exit function more than once, or calls both
- functions (<a href="#7.22.4.4">7.22.4.4</a>, <a href="#7.22.4.7">7.22.4.7</a>).
--- During the call to a function registered with the atexit or at_quick_exit
- function, a call is made to the longjmp function that would terminate the call to the
- registered function (<a href="#7.22.4.4">7.22.4.4</a>, <a href="#7.22.4.7">7.22.4.7</a>).
--- The string set up by the getenv or strerror function is modified by the program
- (<a href="#7.22.4.6">7.22.4.6</a>, <a href="#7.23.6.2">7.23.6.2</a>).
--- A command is executed through the system function in a way that is documented as
- causing termination or some other form of undefined behavior (<a href="#7.22.4.8">7.22.4.8</a>).
--- A searching or sorting utility function is called with an invalid pointer argument, even
- if the number of elements is zero (<a href="#7.22.5">7.22.5</a>).
--- The comparison function called by a searching or sorting utility function alters the
- contents of the array being searched or sorted, or returns ordering values
- inconsistently (<a href="#7.22.5">7.22.5</a>).
--- The array being searched by the bsearch function does not have its elements in
- proper order (<a href="#7.22.5.1">7.22.5.1</a>).
--- The current conversion state is used by a multibyte/wide character conversion
- function after changing the LC_CTYPE category (<a href="#7.22.7">7.22.7</a>).
--- A string or wide string utility function is instructed to access an array beyond the end
- of an object (<a href="#7.23.1">7.23.1</a>, <a href="#7.28.4">7.28.4</a>).
--- A string or wide string utility function is called with an invalid pointer argument, even
- if the length is zero (<a href="#7.23.1">7.23.1</a>, <a href="#7.28.4">7.28.4</a>).
--- The contents of the destination array are used after a call to the strxfrm,
- strftime, wcsxfrm, or wcsftime function in which the specified length was
- too small to hold the entire null-terminated result (<a href="#7.23.4.5">7.23.4.5</a>, <a href="#7.26.3.5">7.26.3.5</a>, <a href="#7.28.4.4.4">7.28.4.4.4</a>,
- <a href="#7.28.5.1">7.28.5.1</a>).
-
-[<a name="p565" href="#p565">page 565</a>] (<a href="#Contents">Contents</a>)
-
- -- The first argument in the very first call to the strtok or wcstok is a null pointer
- (<a href="#7.23.5.8">7.23.5.8</a>, <a href="#7.28.4.5.7">7.28.4.5.7</a>).
- -- The type of an argument to a type-generic macro is not compatible with the type of
- the corresponding parameter of the selected function (<a href="#7.24">7.24</a>).
- -- A complex argument is supplied for a generic parameter of a type-generic macro that
- has no corresponding complex function (<a href="#7.24">7.24</a>).
- -- At least one field of the broken-down time passed to asctime contains a value
- outside its normal range, or the calculated year exceeds four digits or is less than the
- year 1000 (<a href="#7.26.3.1">7.26.3.1</a>).
- -- The argument corresponding to an s specifier without an l qualifier in a call to the
- fwprintf function does not point to a valid multibyte character sequence that
- begins in the initial shift state (<a href="#7.28.2.11">7.28.2.11</a>).
- -- In a call to the wcstok function, the object pointed to by ptr does not have the
- value stored by the previous call for the same wide string (<a href="#7.28.4.5.7">7.28.4.5.7</a>).
- -- An mbstate_t object is used inappropriately (<a href="#7.28.6">7.28.6</a>).
- -- The value of an argument of type wint_t to a wide character classification or case
- mapping function is neither equal to the value of WEOF nor representable as a
- wchar_t (<a href="#7.29.1">7.29.1</a>).
- -- The iswctype function is called using a different LC_CTYPE category from the
- one in effect for the call to the wctype function that returned the description
- (<a href="#7.29.2.2.1">7.29.2.2.1</a>).
- -- The towctrans function is called using a different LC_CTYPE category from the
- one in effect for the call to the wctrans function that returned the description
- (<a href="#7.29.3.2.1">7.29.3.2.1</a>).
-<a name="J.3" href="#J.3"><b> J.3 Implementation-defined behavior</b></a>
-1 A conforming implementation is required to document its choice of behavior in each of
- the areas listed in this subclause. The following are implementation-defined:
-
-
-
-
-[<a name="p566" href="#p566">page 566</a>] (<a href="#Contents">Contents</a>)
-
-<a name="J.3.1" href="#J.3.1"><b> J.3.1 Translation</b></a>
-1 -- How a diagnostic is identified (<a href="#3.10">3.10</a>, <a href="#5.1.1.3">5.1.1.3</a>).
- -- Whether each nonempty sequence of white-space characters other than new-line is
- retained or replaced by one space character in translation phase 3 (<a href="#5.1.1.2">5.1.1.2</a>).
-<a name="J.3.2" href="#J.3.2"><b> J.3.2 Environment</b></a>
-1 -- The mapping between physical source file multibyte characters and the source
- character set in translation phase 1 (<a href="#5.1.1.2">5.1.1.2</a>).
- -- The name and type of the function called at program startup in a freestanding
- environment (<a href="#5.1.2.1">5.1.2.1</a>).
- -- The effect of program termination in a freestanding environment (<a href="#5.1.2.1">5.1.2.1</a>).
- -- An alternative manner in which the main function may be defined (<a href="#5.1.2.2.1">5.1.2.2.1</a>).
- -- The values given to the strings pointed to by the argv argument to main (<a href="#5.1.2.2.1">5.1.2.2.1</a>).
- -- What constitutes an interactive device (<a href="#5.1.2.3">5.1.2.3</a>).
- -- Whether a program can have more than one thread of execution in a freestanding
- environment (<a href="#5.1.2.4">5.1.2.4</a>).
- -- The set of signals, their semantics, and their default handling (<a href="#7.14">7.14</a>).
- -- Signal values other than SIGFPE, SIGILL, and SIGSEGV that correspond to a
- computational exception (<a href="#7.14.1.1">7.14.1.1</a>).
- -- Signals for which the equivalent of signal(sig, SIG_IGN); is executed at
- program startup (<a href="#7.14.1.1">7.14.1.1</a>).
- -- The set of environment names and the method for altering the environment list used
- by the getenv function (<a href="#7.22.4.6">7.22.4.6</a>).
- -- The manner of execution of the string by the system function (<a href="#7.22.4.8">7.22.4.8</a>).
-<a name="J.3.3" href="#J.3.3"><b> J.3.3 Identifiers</b></a>
-1 -- Which additional multibyte characters may appear in identifiers and their
- correspondence to universal character names (<a href="#6.4.2">6.4.2</a>).
- -- The number of significant initial characters in an identifier (<a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2">6.4.2</a>).
-
-
-
-
-[<a name="p567" href="#p567">page 567</a>] (<a href="#Contents">Contents</a>)
-
-<a name="J.3.4" href="#J.3.4"><b> J.3.4 Characters</b></a>
-1 -- The number of bits in a byte (<a href="#3.6">3.6</a>).
- -- The values of the members of the execution character set (<a href="#5.2.1">5.2.1</a>).
- -- The unique value of the member of the execution character set produced for each of
- the standard alphabetic escape sequences (<a href="#5.2.2">5.2.2</a>).
- -- The value of a char object into which has been stored any character other than a
- member of the basic execution character set (<a href="#6.2.5">6.2.5</a>).
- -- Which of signed char or unsigned char has the same range, representation,
- and behavior as ''plain'' char (<a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>).
- -- The mapping of members of the source character set (in character constants and string
- literals) to members of the execution character set (<a href="#6.4.4.4">6.4.4.4</a>, <a href="#5.1.1.2">5.1.1.2</a>).
- -- The value of an integer character constant containing more than one character or
- containing a character or escape sequence that does not map to a single-byte
- execution character (<a href="#6.4.4.4">6.4.4.4</a>).
- -- The value of a wide character constant containing more than one multibyte character
- or a single multibyte character that maps to multiple members of the extended
- execution character set, or containing a multibyte character or escape sequence not
- represented in the extended execution character set (<a href="#6.4.4.4">6.4.4.4</a>).
- -- The current locale used to convert a wide character constant consisting of a single
- multibyte character that maps to a member of the extended execution character set
- into a corresponding wide character code (<a href="#6.4.4.4">6.4.4.4</a>).
- -- Whether differently-prefixed wide string literal tokens can be concatenated and, if so,
- the treatment of the resulting multibyte character sequence (<a href="#6.4.5">6.4.5</a>).
- -- The current locale used to convert a wide string literal into corresponding wide
- character codes (<a href="#6.4.5">6.4.5</a>).
- -- The value of a string literal containing a multibyte character or escape sequence not
- represented in the execution character set (<a href="#6.4.5">6.4.5</a>).
- -- The encoding of any of wchar_t, char16_t, and char32_t where the
- corresponding standard encoding macro (__STDC_ISO_10646__,
- __STDC_UTF_16__, or __STDC_UTF_32__) is not defined (<a href="#6.10.8.2">6.10.8.2</a>).
-
-
-
-
-[<a name="p568" href="#p568">page 568</a>] (<a href="#Contents">Contents</a>)
-
-<a name="J.3.5" href="#J.3.5"><b> J.3.5 Integers</b></a>
-1 -- Any extended integer types that exist in the implementation (<a href="#6.2.5">6.2.5</a>).
- -- Whether signed integer types are represented using sign and magnitude, two's
- complement, or ones' complement, and whether the extraordinary value is a trap
- representation or an ordinary value (<a href="#6.2.6.2">6.2.6.2</a>).
- -- The rank of any extended integer type relative to another extended integer type with
- the same precision (<a href="#6.3.1.1">6.3.1.1</a>).
- -- The result of, or the signal raised by, converting an integer to a signed integer type
- when the value cannot be represented in an object of that type (<a href="#6.3.1.3">6.3.1.3</a>).
- -- The results of some bitwise operations on signed integers (<a href="#6.5">6.5</a>).
-<a name="J.3.6" href="#J.3.6"><b> J.3.6 Floating point</b></a>
-1 -- The accuracy of the floating-point operations and of the library functions in
- <a href="#7.12"><math.h></a> and <a href="#7.3"><complex.h></a> that return floating-point results (<a href="#5.2.4.2.2">5.2.4.2.2</a>).
- -- The accuracy of the conversions between floating-point internal representations and
- string representations performed by the library functions in <a href="#7.21"><stdio.h></a>,
- <a href="#7.22"><stdlib.h></a>, and <a href="#7.28"><wchar.h></a> (<a href="#5.2.4.2.2">5.2.4.2.2</a>).
- -- The rounding behaviors characterized by non-standard values of FLT_ROUNDS
- (<a href="#5.2.4.2.2">5.2.4.2.2</a>).
- -- The evaluation methods characterized by non-standard negative values of
- FLT_EVAL_METHOD (<a href="#5.2.4.2.2">5.2.4.2.2</a>).
- -- The direction of rounding when an integer is converted to a floating-point number that
- cannot exactly represent the original value (<a href="#6.3.1.4">6.3.1.4</a>).
- -- The direction of rounding when a floating-point number is converted to a narrower
- floating-point number (<a href="#6.3.1.5">6.3.1.5</a>).
- -- How the nearest representable value or the larger or smaller representable value
- immediately adjacent to the nearest representable value is chosen for certain floating
- constants (<a href="#6.4.4.2">6.4.4.2</a>).
- -- Whether and how floating expressions are contracted when not disallowed by the
- FP_CONTRACT pragma (<a href="#6.5">6.5</a>).
- -- The default state for the FENV_ACCESS pragma (<a href="#7.6.1">7.6.1</a>).
- -- Additional floating-point exceptions, rounding modes, environments, and
- classifications, and their macro names (<a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>).
- -- The default state for the FP_CONTRACT pragma (<a href="#7.12.2">7.12.2</a>).
-
-
-[<a name="p569" href="#p569">page 569</a>] (<a href="#Contents">Contents</a>)
-
-<a name="J.3.7" href="#J.3.7"><b> J.3.7 Arrays and pointers</b></a>
-1 -- The result of converting a pointer to an integer or vice versa (<a href="#6.3.2.3">6.3.2.3</a>).
- -- The size of the result of subtracting two pointers to elements of the same array
- (<a href="#6.5.6">6.5.6</a>).
-<a name="J.3.8" href="#J.3.8"><b> J.3.8 Hints</b></a>
-1 -- The extent to which suggestions made by using the register storage-class
- specifier are effective (<a href="#6.7.1">6.7.1</a>).
- -- The extent to which suggestions made by using the inline function specifier are
- effective (<a href="#6.7.4">6.7.4</a>).
-<a name="J.3.9" href="#J.3.9"><b> J.3.9 Structures, unions, enumerations, and bit-fields</b></a>
-1 -- Whether a ''plain'' int bit-field is treated as a signed int bit-field or as an
- unsigned int bit-field (<a href="#6.7.2">6.7.2</a>, <a href="#6.7.2.1">6.7.2.1</a>).
- -- Allowable bit-field types other than _Bool, signed int, and unsigned int
- (<a href="#6.7.2.1">6.7.2.1</a>).
- -- Whether atomic types are permitted for bit-fields (<a href="#6.7.2.1">6.7.2.1</a>).
- -- Whether a bit-field can straddle a storage-unit boundary (<a href="#6.7.2.1">6.7.2.1</a>).
- -- The order of allocation of bit-fields within a unit (<a href="#6.7.2.1">6.7.2.1</a>).
- -- The alignment of non-bit-field members of structures (<a href="#6.7.2.1">6.7.2.1</a>). This should present
- no problem unless binary data written by one implementation is read by another.
- -- The integer type compatible with each enumerated type (<a href="#6.7.2.2">6.7.2.2</a>).
-<a name="J.3.10" href="#J.3.10"><b> J.3.10 Qualifiers</b></a>
-1 -- What constitutes an access to an object that has volatile-qualified type (<a href="#6.7.3">6.7.3</a>).
-<a name="J.3.11" href="#J.3.11"><b> J.3.11 Preprocessing directives</b></a>
-1 -- The locations within #pragma directives where header name preprocessing tokens
- are recognized (<a href="#6.4">6.4</a>, <a href="#6.4.7">6.4.7</a>).
- -- How sequences in both forms of header names are mapped to headers or external
- source file names (<a href="#6.4.7">6.4.7</a>).
- -- Whether the value of a character constant in a constant expression that controls
- conditional inclusion matches the value of the same character constant in the
- execution character set (<a href="#6.10.1">6.10.1</a>).
- -- Whether the value of a single-character character constant in a constant expression
- that controls conditional inclusion may have a negative value (<a href="#6.10.1">6.10.1</a>).
-
-
-[<a name="p570" href="#p570">page 570</a>] (<a href="#Contents">Contents</a>)
-
- -- The places that are searched for an included < > delimited header, and how the places
- are specified or the header is identified (<a href="#6.10.2">6.10.2</a>).
- -- How the named source file is searched for in an included " " delimited header
- (<a href="#6.10.2">6.10.2</a>).
- -- The method by which preprocessing tokens (possibly resulting from macro
- expansion) in a #include directive are combined into a header name (<a href="#6.10.2">6.10.2</a>).
- -- The nesting limit for #include processing (<a href="#6.10.2">6.10.2</a>).
- -- Whether the # operator inserts a \ character before the \ character that begins a
- universal character name in a character constant or string literal (<a href="#6.10.3.2">6.10.3.2</a>).
- -- The behavior on each recognized non-STDC #pragma directive (<a href="#6.10.6">6.10.6</a>).
- -- The definitions for __DATE__ and __TIME__ when respectively, the date and
- time of translation are not available (<a href="#6.10.8.1">6.10.8.1</a>).
-<a name="J.3.12" href="#J.3.12"><b> J.3.12 Library functions</b></a>
-1 -- Any library facilities available to a freestanding program, other than the minimal set
- required by clause 4 (<a href="#5.1.2.1">5.1.2.1</a>).
- -- The format of the diagnostic printed by the assert macro (<a href="#7.2.1.1">7.2.1.1</a>).
- -- The representation of the floating-point status flags stored by the
- fegetexceptflag function (<a href="#7.6.2.2">7.6.2.2</a>).
- -- Whether the feraiseexcept function raises the ''inexact'' floating-point
- exception in addition to the ''overflow'' or ''underflow'' floating-point exception
- (<a href="#7.6.2.3">7.6.2.3</a>).
- -- Strings other than "C" and "" that may be passed as the second argument to the
- setlocale function (<a href="#7.11.1.1">7.11.1.1</a>).
- -- The types defined for float_t and double_t when the value of the
- FLT_EVAL_METHOD macro is less than 0 (<a href="#7.12">7.12</a>).
- -- Domain errors for the mathematics functions, other than those required by this
- International Standard (<a href="#7.12.1">7.12.1</a>).
- -- The values returned by the mathematics functions on domain errors or pole errors
- (<a href="#7.12.1">7.12.1</a>).
- -- The values returned by the mathematics functions on underflow range errors, whether
- errno is set to the value of the macro ERANGE when the integer expression
- math_errhandling & MATH_ERRNO is nonzero, and whether the ''underflow''
- floating-point exception is raised when the integer expression math_errhandling
- & MATH_ERREXCEPT is nonzero. (<a href="#7.12.1">7.12.1</a>).
-
-[<a name="p571" href="#p571">page 571</a>] (<a href="#Contents">Contents</a>)
-
--- Whether a domain error occurs or zero is returned when an fmod function has a
- second argument of zero (<a href="#7.12.10.1">7.12.10.1</a>).
--- Whether a domain error occurs or zero is returned when a remainder function has
- a second argument of zero (<a href="#7.12.10.2">7.12.10.2</a>).
--- The base-2 logarithm of the modulus used by the remquo functions in reducing the
- quotient (<a href="#7.12.10.3">7.12.10.3</a>).
--- Whether a domain error occurs or zero is returned when a remquo function has a
- second argument of zero (<a href="#7.12.10.3">7.12.10.3</a>).
--- Whether the equivalent of signal(sig, SIG_DFL); is executed prior to the call
- of a signal handler, and, if not, the blocking of signals that is performed (<a href="#7.14.1.1">7.14.1.1</a>).
--- The null pointer constant to which the macro NULL expands (<a href="#7.19">7.19</a>).
--- Whether the last line of a text stream requires a terminating new-line character
- (<a href="#7.21.2">7.21.2</a>).
--- Whether space characters that are written out to a text stream immediately before a
- new-line character appear when read in (<a href="#7.21.2">7.21.2</a>).
--- The number of null characters that may be appended to data written to a binary
- stream (<a href="#7.21.2">7.21.2</a>).
--- Whether the file position indicator of an append-mode stream is initially positioned at
- the beginning or end of the file (<a href="#7.21.3">7.21.3</a>).
--- Whether a write on a text stream causes the associated file to be truncated beyond that
- point (<a href="#7.21.3">7.21.3</a>).
--- The characteristics of file buffering (<a href="#7.21.3">7.21.3</a>).
--- Whether a zero-length file actually exists (<a href="#7.21.3">7.21.3</a>).
--- The rules for composing valid file names (<a href="#7.21.3">7.21.3</a>).
--- Whether the same file can be simultaneously open multiple times (<a href="#7.21.3">7.21.3</a>).
--- The nature and choice of encodings used for multibyte characters in files (<a href="#7.21.3">7.21.3</a>).
--- The effect of the remove function on an open file (<a href="#7.21.4.1">7.21.4.1</a>).
--- The effect if a file with the new name exists prior to a call to the rename function
- (<a href="#7.21.4.2">7.21.4.2</a>).
--- Whether an open temporary file is removed upon abnormal program termination
- (<a href="#7.21.4.3">7.21.4.3</a>).
--- Which changes of mode are permitted (if any), and under what circumstances
- (<a href="#7.21.5.4">7.21.5.4</a>).
-
-[<a name="p572" href="#p572">page 572</a>] (<a href="#Contents">Contents</a>)
-
--- The style used to print an infinity or NaN, and the meaning of any n-char or n-wchar
- sequence printed for a NaN (<a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a>).
--- The output for %p conversion in the fprintf or fwprintf function (<a href="#7.21.6.1">7.21.6.1</a>,
- <a href="#7.28.2.1">7.28.2.1</a>).
--- The interpretation of a - character that is neither the first nor the last character, nor
- the second where a ^ character is the first, in the scanlist for %[ conversion in the
- fscanf or fwscanf function (<a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>).
--- The set of sequences matched by a %p conversion and the interpretation of the
- corresponding input item in the fscanf or fwscanf function (<a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>).
--- The value to which the macro errno is set by the fgetpos, fsetpos, or ftell
- functions on failure (<a href="#7.21.9.1">7.21.9.1</a>, <a href="#7.21.9.3">7.21.9.3</a>, <a href="#7.21.9.4">7.21.9.4</a>).
--- The meaning of any n-char or n-wchar sequence in a string representing a NaN that is
- converted by the strtod, strtof, strtold, wcstod, wcstof, or wcstold
- function (<a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>).
--- Whether or not the strtod, strtof, strtold, wcstod, wcstof, or wcstold
- function sets errno to ERANGE when underflow occurs (<a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>).
--- Whether the calloc, malloc, and realloc functions return a null pointer or a
- pointer to an allocated object when the size requested is zero (<a href="#7.22.3">7.22.3</a>).
--- 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
- (<a href="#7.22.4.1">7.22.4.1</a>, <a href="#7.22.4.5">7.22.4.5</a>).
--- The termination status returned to the host environment by the abort, exit,
- _Exit, or quick_exit function (<a href="#7.22.4.1">7.22.4.1</a>, <a href="#7.22.4.4">7.22.4.4</a>, <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a>).
--- The value returned by the system function when its argument is not a null pointer
- (<a href="#7.22.4.8">7.22.4.8</a>).
--- The local time zone and Daylight Saving Time (<a href="#7.26.1">7.26.1</a>).
--- The range and precision of times representable in clock_t and time_t (<a href="#7.26">7.26</a>).
--- The era for the clock function (<a href="#7.26.2.1">7.26.2.1</a>).
--- The replacement string for the %Z specifier to the strftime, and wcsftime
- functions in the "C" locale (<a href="#7.26.3.5">7.26.3.5</a>, <a href="#7.28.5.1">7.28.5.1</a>).
--- Whether the functions in <a href="#7.12"><math.h></a> honor the rounding direction mode in an
- IEC 60559 conformant implementation, unless explicitly specified otherwise (<a href="#F.10">F.10</a>).
-
-
-
-
-[<a name="p573" href="#p573">page 573</a>] (<a href="#Contents">Contents</a>)
-
-<a name="J.3.13" href="#J.3.13"><b> J.3.13 Architecture</b></a>
-1 -- The values or expressions assigned to the macros specified in the headers
- <a href="#7.7"><float.h></a>, <a href="#7.10"><limits.h></a>, and <a href="#7.20"><stdint.h></a> (<a href="#5.2.4.2">5.2.4.2</a>, <a href="#7.20.2">7.20.2</a>, <a href="#7.20.3">7.20.3</a>).
- -- The result of attempting to indirectly access an object with automatic or thread
- storage duration from a thread other than the one with which it is associated (<a href="#6.2.4">6.2.4</a>).
- -- The number, order, and encoding of bytes in any object (when not explicitly specified
- in this International Standard) (<a href="#6.2.6.1">6.2.6.1</a>).
- -- Whether any extended alignments are supported and the contexts in which they are
- supported (<a href="#6.2.8">6.2.8</a>).
- -- Valid alignment values other than those returned by an alignof expression for
- fundamental types, if any (<a href="#6.2.8">6.2.8</a>).
- -- The value of the result of the sizeof and alignof operators (<a href="#6.5.3.4">6.5.3.4</a>).
-<a name="J.4" href="#J.4"><b> J.4 Locale-specific behavior</b></a>
-1 The following characteristics of a hosted environment are locale-specific and are required
- to be documented by the implementation:
- -- Additional members of the source and execution character sets beyond the basic
- character set (<a href="#5.2.1">5.2.1</a>).
- -- The presence, meaning, and representation of additional multibyte characters in the
- execution character set beyond the basic character set (<a href="#5.2.1.2">5.2.1.2</a>).
- -- The shift states used for the encoding of multibyte characters (<a href="#5.2.1.2">5.2.1.2</a>).
- -- The direction of writing of successive printing characters (<a href="#5.2.2">5.2.2</a>).
- -- The decimal-point character (<a href="#7.1.1">7.1.1</a>).
- -- The set of printing characters (<a href="#7.4">7.4</a>, <a href="#7.29.2">7.29.2</a>).
- -- The set of control characters (<a href="#7.4">7.4</a>, <a href="#7.29.2">7.29.2</a>).
- -- The sets of characters tested for by the isalpha, isblank, islower, ispunct,
- isspace, isupper, iswalpha, iswblank, iswlower, iswpunct,
- iswspace, or iswupper functions (<a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.3">7.4.1.3</a>, <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.1.9">7.4.1.9</a>, <a href="#7.4.1.10">7.4.1.10</a>,
- <a href="#7.4.1.11">7.4.1.11</a>, <a href="#7.29.2.1.2">7.29.2.1.2</a>, <a href="#7.29.2.1.3">7.29.2.1.3</a>, <a href="#7.29.2.1.7">7.29.2.1.7</a>, <a href="#7.29.2.1.9">7.29.2.1.9</a>, <a href="#7.29.2.1.10">7.29.2.1.10</a>, <a href="#7.29.2.1.11">7.29.2.1.11</a>).
- -- The native environment (<a href="#7.11.1.1">7.11.1.1</a>).
- -- Additional subject sequences accepted by the numeric conversion functions (<a href="#7.22.1">7.22.1</a>,
- <a href="#7.28.4.1">7.28.4.1</a>).
- -- The collation sequence of the execution character set (<a href="#7.23.4.3">7.23.4.3</a>, <a href="#7.28.4.4.2">7.28.4.4.2</a>).
-
-
-[<a name="p574" href="#p574">page 574</a>] (<a href="#Contents">Contents</a>)
-
- -- The contents of the error message strings set up by the strerror function
- (<a href="#7.23.6.2">7.23.6.2</a>).
- -- The formats for time and date (<a href="#7.26.3.5">7.26.3.5</a>, <a href="#7.28.5.1">7.28.5.1</a>).
- -- Character mappings that are supported by the towctrans function (<a href="#7.29.1">7.29.1</a>).
- -- Character classifications that are supported by the iswctype function (<a href="#7.29.1">7.29.1</a>).
-<a name="J.5" href="#J.5"><b> J.5 Common extensions</b></a>
-1 The following extensions are widely used in many systems, but are not portable to all
- implementations. The inclusion of any extension that may cause a strictly conforming
- program to become invalid renders an implementation nonconforming. Examples of such
- extensions are new keywords, extra library functions declared in standard headers, or
- predefined macros with names that do not begin with an underscore.
-<a name="J.5.1" href="#J.5.1"><b> J.5.1 Environment arguments</b></a>
-1 In a hosted environment, the main function receives a third argument, char *envp[],
- that points to a null-terminated array of pointers to char, each of which points to a string
- that provides information about the environment for this execution of the program
- (<a href="#5.1.2.2.1">5.1.2.2.1</a>).
-<a name="J.5.2" href="#J.5.2"><b> J.5.2 Specialized identifiers</b></a>
-1 Characters other than the underscore _, letters, and digits, that are not part of the basic
- source character set (such as the dollar sign $, or characters in national character sets)
- may appear in an identifier (<a href="#6.4.2">6.4.2</a>).
-<a name="J.5.3" href="#J.5.3"><b> J.5.3 Lengths and cases of identifiers</b></a>
-1 All characters in identifiers (with or without external linkage) are significant (<a href="#6.4.2">6.4.2</a>).
-<a name="J.5.4" href="#J.5.4"><b> J.5.4 Scopes of identifiers</b></a>
-1 A function identifier, or the identifier of an object the declaration of which contains the
- keyword extern, has file scope (<a href="#6.2.1">6.2.1</a>).
-<a name="J.5.5" href="#J.5.5"><b> J.5.5 Writable string literals</b></a>
-1 String literals are modifiable (in which case, identical string literals should denote distinct
- objects) (<a href="#6.4.5">6.4.5</a>).
-
-
-
-
-[<a name="p575" href="#p575">page 575</a>] (<a href="#Contents">Contents</a>)
-
-<a name="J.5.6" href="#J.5.6"><b> J.5.6 Other arithmetic types</b></a>
-1 Additional arithmetic types, such as __int128 or double double, and their
- appropriate conversions are defined (<a href="#6.2.5">6.2.5</a>, <a href="#6.3.1">6.3.1</a>). Additional floating types may have
- more range or precision than long double, may be used for evaluating expressions of
- other floating types, and may be used to define float_t or double_t.
-<a name="J.5.7" href="#J.5.7"><b> J.5.7 Function pointer casts</b></a>
-1 A pointer to an object or to void may be cast to a pointer to a function, allowing data to
- be invoked as a function (<a href="#6.5.4">6.5.4</a>).
-2 A pointer to a function may be cast to a pointer to an object or to void, allowing a
- function to be inspected or modified (for example, by a debugger) (<a href="#6.5.4">6.5.4</a>).
-<a name="J.5.8" href="#J.5.8"><b> J.5.8 Extended bit-field types</b></a>
-1 A bit-field may be declared with a type other than _Bool, unsigned int, or
- signed int, with an appropriate maximum width (<a href="#6.7.2.1">6.7.2.1</a>).
-<a name="J.5.9" href="#J.5.9"><b> J.5.9 The fortran keyword</b></a>
-1 The fortran 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 (<a href="#6.7.4">6.7.4</a>).
-<a name="J.5.10" href="#J.5.10"><b> J.5.10 The asm keyword</b></a>
-1 The asm keyword may be used to insert assembly language directly into the translator
- output (<a href="#6.8">6.8</a>). The most common implementation is via a statement of the form:
- asm ( character-string-literal );
-<a name="J.5.11" href="#J.5.11"><b> J.5.11 Multiple external definitions</b></a>
-1 There may be more than one external definition for the identifier of an object, with or
- without the explicit use of the keyword extern; if the definitions disagree, or more than
- one is initialized, the behavior is undefined (<a href="#6.9.2">6.9.2</a>).
-<a name="J.5.12" href="#J.5.12"><b> J.5.12 Predefined macro names</b></a>
-1 Macro names that do not begin with an underscore, describing the translation and
- execution environments, are defined by the implementation before translation begins
- (<a href="#6.10.8">6.10.8</a>).
-
-
-
-
-[<a name="p576" href="#p576">page 576</a>] (<a href="#Contents">Contents</a>)
-
-<a name="J.5.13" href="#J.5.13"><b> J.5.13 Floating-point status flags</b></a>
-1 If any floating-point status flags are set on normal termination after all calls to functions
- registered by the atexit function have been made (see <a href="#7.22.4.4">7.22.4.4</a>), the implementation
- writes some diagnostics indicating the fact to the stderr stream, if it is still open,
-<a name="J.5.14" href="#J.5.14"><b> J.5.14 Extra arguments for signal handlers</b></a>
-1 Handlers for specific signals are called with extra arguments in addition to the signal
- number (<a href="#7.14.1.1">7.14.1.1</a>).
-<a name="J.5.15" href="#J.5.15"><b> J.5.15 Additional stream types and file-opening modes</b></a>
-1 Additional mappings from files to streams are supported (<a href="#7.21.2">7.21.2</a>).
-2 Additional file-opening modes may be specified by characters appended to the mode
- argument of the fopen function (<a href="#7.21.5.3">7.21.5.3</a>).
-<a name="J.5.16" href="#J.5.16"><b> J.5.16 Defined file position indicator</b></a>
-1 The file position indicator is decremented by each successful call to the ungetc or
- ungetwc function for a text stream, except if its value was zero before a call (<a href="#7.21.7.10">7.21.7.10</a>,
-<a name="7.28.3.10)" href="#7.28.3.10)"><b> 7.28.3.10).</b></a>
-<a name="J.5.17" href="#J.5.17"><b> J.5.17 Math error reporting</b></a>
-1 Functions declared in <a href="#7.3"><complex.h></a> and <a href="#7.12"><math.h></a> raise SIGFPE to report errors
- instead of, or in addition to, setting errno or raising floating-point exceptions (<a href="#7.3">7.3</a>,
-<a name="7.12)" href="#7.12)"><b> 7.12).</b></a>
-
-
-
-
-[<a name="p577" href="#p577">page 577</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K" href="#K"><b> Annex K</b></a>
- (normative)
- Bounds-checking interfaces
-<a name="K.1" href="#K.1"><b> K.1 Background</b></a>
-1 Traditionally, the C Library has contained many functions that trust the programmer to
- provide output character arrays big enough to hold the result being produced. Not only
- do these functions not check that the arrays are big enough, they frequently lack the
- information needed to perform such checks. While it is possible to write safe, robust, and
- error-free code using the existing library, the library tends to promote programming styles
- that lead to mysterious failures if a result is too big for the provided array.
-2 A common programming style is to declare character arrays large enough to handle most
- practical cases. However, if these arrays are not large enough to handle the resulting
- strings, data can be written past the end of the array overwriting other data and program
- structures. The program never gets any indication that a problem exists, and so never has
- a chance to recover or to fail gracefully.
-3 Worse, this style of programming has compromised the security of computers and
- networks. Buffer overflows can often be exploited to run arbitrary code with the
- permissions of the vulnerable (defective) program.
-4 If the programmer writes runtime checks to verify lengths before calling library
- functions, then those runtime checks frequently duplicate work done inside the library
- functions, which discover string lengths as a side effect of doing their job.
-5 This annex provides alternative library functions that promote safer, more secure
- programming. The alternative functions verify that output buffers are large enough for
- the intended result and return a failure indicator if they are not. Data is never written past
- the end of an array. All string results are null terminated.
-6 This annex also addresses another problem that complicates writing robust code:
- functions that are not reentrant because they return pointers to static objects owned by the
- function. Such functions can be troublesome since a previously returned result can
- change if the function is called again, perhaps by another thread.
-
-
-
-
-[<a name="p578" href="#p578">page 578</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.2" href="#K.2"><b> K.2 Scope</b></a>
-1 This annex specifies a series of optional extensions that can be useful in the mitigation of
- security vulnerabilities in programs, and comprise new functions, macros, and types
- declared or defined in existing standard headers.
-2 An implementation that defines __STDC_LIB_EXT1__ shall conform to the
- specifications in this annex.367)
-3 Subclause <a href="#K.3">K.3</a> should be read as if it were merged into the parallel structure of named
- subclauses of clause 7.
-<a name="K.3" href="#K.3"><b> K.3 Library</b></a>
-<a name="K.3.1" href="#K.3.1"><b> K.3.1 Introduction</b></a>
-<a name="K.3.1.1" href="#K.3.1.1"><b> K.3.1.1 Standard headers</b></a>
-1 The functions, macros, and types declared or defined in <a href="#K.3">K.3</a> and its subclauses are not
- declared or defined by their respective headers if __STDC_WANT_LIB_EXT1__ is
- defined as a macro which expands to the integer constant 0 at the point in the source file
- where the appropriate header is first included.
-2 The functions, macros, and types declared or defined in <a href="#K.3">K.3</a> and its subclauses are
- declared and defined by their respective headers if __STDC_WANT_LIB_EXT1__ is
- defined as a macro which expands to the integer constant 1 at the point in the source file
- where the appropriate header is first included.368)
-3 It is implementation-defined whether the functions, macros, and types declared or defined
- in <a href="#K.3">K.3</a> and its subclauses are declared or defined by their respective headers if
- __STDC_WANT_LIB_EXT1__ is not defined as a macro at the point in the source file
- where the appropriate header is first included.369)
-4 Within a preprocessing translation unit, __STDC_WANT_LIB_EXT1__ shall be
- defined identically for all inclusions of any headers from subclause <a href="#K.3">K.3</a>. If
- __STDC_WANT_LIB_EXT1__ is defined differently for any such inclusion, the
- implementation shall issue a diagnostic as if a preprocessor error directive were used.
-
-
- 367) Implementations that do not define __STDC_LIB_EXT1__ are not required to conform to these
- specifications.
- 368) Future revisions of this International Standard may define meanings for other values of
- __STDC_WANT_LIB_EXT1__.
- 369) Subclause <a href="#7.1.3">7.1.3</a> reserves certain names and patterns of names that an implementation may use in
- headers. All other names are not reserved, and a conforming implementation is not permitted to use
- them. While some of the names defined in <a href="#K.3">K.3</a> and its subclauses are reserved, others are not. If an
- unreserved name is defined in a header when __STDC_WANT_LIB_EXT1__ is defined as 0, the
- implementation is not conforming.
-
-[<a name="p579" href="#p579">page 579</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.1.2" href="#K.3.1.2"><b> K.3.1.2 Reserved identifiers</b></a>
-1 Each macro name in any of the following subclauses is reserved for use as specified if it
- is defined by any of its associated headers when included; unless explicitly stated
- otherwise (see <a href="#7.1.4">7.1.4</a>).
-2 All identifiers with external linkage in any of the following subclauses are reserved for
- use as identifiers with external linkage if any of them are used by the program. None of
- them are reserved if none of them are used.
-3 Each identifier with file scope listed in any of the following subclauses is reserved for use
- as a macro name and as an identifier with file scope in the same name space if it is
- defined by any of its associated headers when included.
-<a name="K.3.1.3" href="#K.3.1.3"><b> K.3.1.3 Use of errno</b></a>
-1 An implementation may set errno for the functions defined in this annex, but is not
- required to.
-<a name="K.3.1.4" href="#K.3.1.4"><b> K.3.1.4 Runtime-constraint violations</b></a>
-1 Most functions in this annex include as part of their specification a list of runtime-
- constraints. These runtime-constraints are requirements on the program using the
- library.370)
-2 Implementations shall verify that the runtime-constraints for a function are not violated
- by the program. If a runtime-constraint is violated, the implementation shall call the
- currently registered runtime-constraint handler (see set_constraint_handler_s
- in <a href="#7.22"><stdlib.h></a>). Multiple runtime-constraint violations in the same call to a library
- function result in only one call to the runtime-constraint handler. It is unspecified which
- one of the multiple runtime-constraint violations cause the handler to be called.
-3 If the runtime-constraints section for a function states an action to be performed when a
- runtime-constraint violation occurs, the function shall perform the action before calling
- the runtime-constraint handler. If the runtime-constraints section lists actions that are
- prohibited when a runtime-constraint violation occurs, then such actions are prohibited to
- the function both before calling the handler and after the handler returns.
-4 The runtime-constraint handler might not return. If the handler does return, the library
- function whose runtime-constraint was violated shall return some indication of failure as
- given by the returns section in the function's specification.
-
-
-
- 370) Although runtime-constraints replace many cases of undefined behavior, undefined behavior still
- exists in this annex. Implementations are free to detect any case of undefined behavior and treat it as a
- runtime-constraint violation by calling the runtime-constraint handler. This license comes directly
- from the definition of undefined behavior.
-
-[<a name="p580" href="#p580">page 580</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.2" href="#K.3.2"><b> K.3.2 Errors <errno.h></b></a>
-1 The header <a href="#7.5"><errno.h></a> defines a type.
-2 The type is
- errno_t
- which is type int.371)
-<a name="K.3.3" href="#K.3.3"><b> K.3.3 Common definitions <stddef.h></b></a>
-1 The header <a href="#7.19"><stddef.h></a> defines a type.
-2 The type is
- rsize_t
- which is the type size_t.372)
-<a name="K.3.4" href="#K.3.4"><b> K.3.4 Integer types <stdint.h></b></a>
-1 The header <a href="#7.20"><stdint.h></a> defines a macro.
-2 The macro is
- RSIZE_MAX
- which expands to a value373) of type size_t. Functions that have parameters of type
- rsize_t consider it a runtime-constraint violation if the values of those parameters are
- greater than RSIZE_MAX.
- Recommended practice
-3 Extremely large object sizes are frequently a sign that an object's size was calculated
- incorrectly. For example, negative numbers appear as very large positive numbers when
- converted to an unsigned type like size_t. Also, some implementations do not support
- objects as large as the maximum value that can be represented by type size_t.
-4 For those reasons, it is sometimes beneficial to restrict the range of object sizes to detect
- programming errors. For implementations targeting machines with large address spaces,
- it is recommended that RSIZE_MAX be defined as the smaller of the size of the largest
- object supported or (SIZE_MAX >> 1), even if this limit is smaller than the size of
- some legitimate, but very large, objects. Implementations targeting machines with small
- address spaces may wish to define RSIZE_MAX as SIZE_MAX, which means that there
-
- 371) As a matter of programming style, errno_t may be used as the type of something that deals only
- with the values that might be found in errno. For example, a function which returns the value of
- errno might be declared as having the return type errno_t.
- 372) See the description of the RSIZE_MAX macro in <a href="#7.20"><stdint.h></a>.
- 373) The macro RSIZE_MAX need not expand to a constant expression.
-
-[<a name="p581" href="#p581">page 581</a>] (<a href="#Contents">Contents</a>)
-
- is no object size that is considered a runtime-constraint violation.
-<a name="K.3.5" href="#K.3.5"><b> K.3.5 Input/output <stdio.h></b></a>
-1 The header <a href="#7.21"><stdio.h></a> defines several macros and two types.
-2 The macros are
- L_tmpnam_s
- which 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_s
- function;
- TMP_MAX_S
- which expands to an integer constant expression that is the maximum number of unique
- file names that can be generated by the tmpnam_s function.
-3 The types are
- errno_t
- which is type int; and
- rsize_t
- which is the type size_t.
-<a name="K.3.5.1" href="#K.3.5.1"><b> K.3.5.1 Operations on files</b></a>
-<a name="K.3.5.1.1" href="#K.3.5.1.1"><b> K.3.5.1.1 The tmpfile_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- errno_t tmpfile_s(FILE * restrict * restrict streamptr);
- Runtime-constraints
-2 streamptr shall not be a null pointer.
-3 If there is a runtime-constraint violation, tmpfile_s does not attempt to create a file.
-<b> Description</b>
-4 The tmpfile_s 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. If the program terminates abnormally, whether an open temporary file is
- removed is implementation-defined. The file is opened for update with "wb+" mode
- with the meaning that mode has in the fopen_s function (including the mode's effect
- on exclusive access and file permissions).
-
-
-[<a name="p582" href="#p582">page 582</a>] (<a href="#Contents">Contents</a>)
-
-5 If the file was created successfully, then the pointer to FILE pointed to by streamptr
- will be set to the pointer to the object controlling the opened file. Otherwise, the pointer
- to FILE pointed to by streamptr will be set to a null pointer.
- Recommended practice
- It should be possible to open at least TMP_MAX_S temporary files during the lifetime of
- the program (this limit may be shared with tmpnam_s) and there should be no limit on
- the number simultaneously open other than this limit and any limit on the number of open
- files (FOPEN_MAX).
-<b> Returns</b>
-6 The tmpfile_s function returns zero if it created the file. If it did not create the file or
- there was a runtime-constraint violation, tmpfile_s returns a nonzero value.
-<a name="K.3.5.1.2" href="#K.3.5.1.2"><b> K.3.5.1.2 The tmpnam_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- errno_t tmpnam_s(char *s, rsize_t maxsize);
- Runtime-constraints
-2 s shall not be a null pointer. maxsize shall be less than or equal to RSIZE_MAX.
- maxsize shall be greater than the length of the generated file name string.
-<b> Description</b>
-3 The tmpnam_s function generates a string that is a valid file name and that is not the
- same as the name of an existing file.374) The function is potentially capable of generating
- TMP_MAX_S different strings, but any or all of them may already be in use by existing
- files and thus not be suitable return values. The lengths of these strings shall be less than
- the value of the L_tmpnam_s macro.
-4 The tmpnam_s function generates a different string each time it is called.
-5 It is assumed that s points to an array of at least maxsize characters. This array will be
- set to generated string, as specified below.
-
-
-
- 374) Files created using strings generated by the tmpnam_s function are temporary only in the sense that
- their names should not collide with those generated by conventional naming rules for the
- implementation. It is still necessary to use the remove function to remove such files when their use
- is ended, and before program termination. Implementations should take care in choosing the patterns
- used for names returned by tmpnam_s. For example, making a thread id part of the names avoids the
- race condition and possible conflict when multiple programs run simultaneously by the same user
- generate the same temporary file names.
-
-[<a name="p583" href="#p583">page 583</a>] (<a href="#Contents">Contents</a>)
-
-6 The implementation shall behave as if no library function except tmpnam calls the
- tmpnam_s function.375)
- Recommended practice
-7 After a program obtains a file name using the tmpnam_s function and before the
- program creates a file with that name, the possibility exists that someone else may create
- a file with that same name. To avoid this race condition, the tmpfile_s function
- should be used instead of tmpnam_s when possible. One situation that requires the use
- of the tmpnam_s function is when the program needs to create a temporary directory
- rather than a temporary file.
-<b> Returns</b>
-8 If no suitable string can be generated, or if there is a runtime-constraint violation, the
- tmpnam_s function writes a null character to s[0] (only if s is not null and maxsize
- is greater than zero) and returns a nonzero value.
-9 Otherwise, the tmpnam_s function writes the string in the array pointed to by s and
- returns zero.
- Environmental limits
-10 The value of the macro TMP_MAX_S shall be at least 25.
-<a name="K.3.5.2" href="#K.3.5.2"><b> K.3.5.2 File access functions</b></a>
-<a name="K.3.5.2.1" href="#K.3.5.2.1"><b> K.3.5.2.1 The fopen_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- errno_t fopen_s(FILE * restrict * restrict streamptr,
- const char * restrict filename,
- const char * restrict mode);
- Runtime-constraints
-2 None of streamptr, filename, or mode shall be a null pointer.
-3 If there is a runtime-constraint violation, fopen_s does not attempt to open a file.
- Furthermore, if streamptr is not a null pointer, fopen_s sets *streamptr to the
- null pointer.
-
-
-
-
- 375) An implementation may have tmpnam call tmpnam_s (perhaps so there is only one naming
- convention for temporary files), but this is not required.
-
-[<a name="p584" href="#p584">page 584</a>] (<a href="#Contents">Contents</a>)
-
-<b> Description</b>
-4 The fopen_s function opens the file whose name is the string pointed to by
- filename, and associates a stream with it.
-5 The mode string shall be as described for fopen, with the addition that modes starting
- with the character 'w' or 'a' may be preceded by the character 'u', see below:
- uw truncate to zero length or create text file for writing, default
- permissions
- uwx create text file for writing, default permissions
- ua append; open or create text file for writing at end-of-file, default
- permissions
- uwb truncate to zero length or create binary file for writing, default
- permissions
- uwbx create binary file for writing, default permissions
- uab append; open or create binary file for writing at end-of-file, default
- permissions
- uw+ truncate to zero length or create text file for update, default
- permissions
- uw+x create text file for update, default permissions
- ua+ append; open or create text file for update, writing at end-of-file,
- default permissions
- uw+b or uwb+ truncate to zero length or create binary file for update, default
- permissions
- uw+bx or uwb+x create binary file for update, default permissions
- ua+b or uab+ append; open or create binary file for update, writing at end-of-file,
- default permissions
-6 Opening a file with exclusive mode ('x' as the last character in the mode argument)
- fails if the file already exists or cannot be created.
-7 To the extent that the underlying system supports the concepts, files opened for writing
- shall be opened with exclusive (also known as non-shared) access. If the file is being
- created, and the first character of the mode string is not 'u', to the extent that the
- underlying system supports it, the file shall have a file permission that prevents other
- users on the system from accessing the file. If the file is being created and first character
- of the mode string is 'u', then by the time the file has been closed, it shall have the
- system default file access permissions.376)
-8 If the file was opened successfully, then the pointer to FILE pointed to by streamptr
- will be set to the pointer to the object controlling the opened file. Otherwise, the pointer
-
-
- 376) These are the same permissions that the file would have been created with by fopen.
-
-[<a name="p585" href="#p585">page 585</a>] (<a href="#Contents">Contents</a>)
-
- to FILE pointed to by streamptr will be set to a null pointer.
-<b> Returns</b>
-9 The fopen_s function returns zero if it opened the file. If it did not open the file or if
- there was a runtime-constraint violation, fopen_s returns a nonzero value.
-<a name="K.3.5.2.2" href="#K.3.5.2.2"><b> K.3.5.2.2 The freopen_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- errno_t freopen_s(FILE * restrict * restrict newstreamptr,
- const char * restrict filename,
- const char * restrict mode,
- FILE * restrict stream);
- Runtime-constraints
-2 None of newstreamptr, mode, and stream shall be a null pointer.
-3 If there is a runtime-constraint violation, freopen_s neither attempts to close any file
- associated with stream nor attempts to open a file. Furthermore, if newstreamptr is
- not a null pointer, fopen_s sets *newstreamptr to the null pointer.
-<b> Description</b>
-4 The freopen_s function opens the file whose name is the string pointed to by
- filename and associates the stream pointed to by stream with it. The mode
- argument has the same meaning as in the fopen_s function (including the mode's effect
- on exclusive access and file permissions).
-5 If filename is a null pointer, the freopen_s 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. It is implementation-defined which changes of mode are
- permitted (if any), and under what circumstances.
-6 The freopen_s function first attempts to close any file that is associated with stream.
- Failure to close the file is ignored. The error and end-of-file indicators for the stream are
- cleared.
-7 If the file was opened successfully, then the pointer to FILE pointed to by
- newstreamptr will be set to the value of stream. Otherwise, the pointer to FILE
- pointed to by newstreamptr will be set to a null pointer.
-<b> Returns</b>
-8 The freopen_s function returns zero if it opened the file. If it did not open the file or
- there was a runtime-constraint violation, freopen_s returns a nonzero value.
-
-[<a name="p586" href="#p586">page 586</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.5.3" href="#K.3.5.3"><b> K.3.5.3 Formatted input/output functions</b></a>
-1 Unless explicitly stated otherwise, if the execution of a function described in this
- subclause causes copying to take place between objects that overlap, the objects take on
- unspecified values.
-<a name="K.3.5.3.1" href="#K.3.5.3.1"><b> K.3.5.3.1 The fprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- int fprintf_s(FILE * restrict stream,
- const char * restrict format, ...);
- Runtime-constraints
-2 Neither stream nor format shall be a null pointer. The %n specifier377) (modified or
- not by flags, field width, or precision) shall not appear in the string pointed to by
- format. Any argument to fprintf_s corresponding to a %s specifier shall not be a
- null pointer.
-3 If there is a runtime-constraint violation,378) the fprintf_s function does not attempt
- to produce further output, and it is unspecified to what extent fprintf_s produced
- output before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The fprintf_s function is equivalent to the fprintf function except for the explicit
- runtime-constraints listed above.
-<b> Returns</b>
-5 The fprintf_s function returns the number of characters transmitted, or a negative
- value if an output error, encoding error, or runtime-constraint violation occurred.
-
-
-
-
- 377) It is not a runtime-constraint violation for the characters %n to appear in sequence in the string pointed
- at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
- format string was %%n.
- 378) Because an implementation may treat any undefined behavior as a runtime-constraint violation, an
- implementation may treat any unsupported specifiers in the string pointed to by format as a runtime-
- constraint violation.
-
-[<a name="p587" href="#p587">page 587</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.5.3.2" href="#K.3.5.3.2"><b> K.3.5.3.2 The fscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- int fscanf_s(FILE * restrict stream,
- const char * restrict format, ...);
- Runtime-constraints
-2 Neither stream nor format shall be a null pointer. Any argument indirected though in
- order to store converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation,379) the fscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent fscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The fscanf_s function is equivalent to fscanf except that the c, s, and [ conversion
- specifiers apply to a pair of arguments (unless assignment suppression is indicated by a
- *). The first of these arguments is the same as for fscanf. That argument is
- immediately followed in the argument list by the second argument, which has type
- rsize_t and gives the number of elements in the array pointed to by the first argument
- of the pair. If the first argument points to a scalar object, it is considered to be an array of
- one element.380)
-5 A matching failure occurs if the number of elements in a receiving object is insufficient to
- hold the converted input (including any trailing null character).
-<b> Returns</b>
-6 The fscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
-
- 379) Because an implementation may treat any undefined behavior as a runtime-constraint violation, an
- implementation may treat any unsupported specifiers in the string pointed to by format as a runtime-
- constraint violation.
- 380) If the format is known at translation time, an implementation may issue a diagnostic for any argument
- used to store the result from a c, s, or [ conversion specifier if that argument is not followed by an
- argument of a type compatible with rsize_t. A limited amount of checking may be done if even if
- the format is not known at translation time. For example, an implementation may issue a diagnostic
- for each argument after format that has of type pointer to one of char, signed char,
- unsigned char, or void that is not followed by an argument of a type compatible with
- rsize_t. The diagnostic could warn that unless the pointer is being used with a conversion specifier
- using the hh length modifier, a length argument must follow the pointer argument. Another useful
- diagnostic could flag any non-pointer argument following format that did not have a type
- compatible with rsize_t.
-
-[<a name="p588" href="#p588">page 588</a>] (<a href="#Contents">Contents</a>)
-
- fscanf_s function returns the number of input items assigned, which can be fewer than
- provided for, or even zero, in the event of an early matching failure.
-7 EXAMPLE 1 The call:
- #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- /* ... */
- int n, i; float x; char name[50];
- n = fscanf_s(stdin, "%d%f%s", &i, &x, name, (rsize_t) 50);
- with the input line:
- 25 54.32E-1 thompson
- will assign to n the value 3, to i the value 25, to x the value 5.432, and to name the sequence
- thompson\0.
-
-8 EXAMPLE 2 The call:
- #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- /* ... */
- int n; char s[5];
- n = fscanf_s(stdin, "%s", s, sizeof s);
- with the input line:
- hello
- will assign to n the value 0 since a matching failure occurred because the sequence hello\0 requires an
- array of six characters to store it.
-
-<a name="K.3.5.3.3" href="#K.3.5.3.3"><b> K.3.5.3.3 The printf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- int printf_s(const char * restrict format, ...);
- Runtime-constraints
-2 format shall not be a null pointer. The %n specifier381) (modified or not by flags, field
- width, or precision) shall not appear in the string pointed to by format. Any argument
- to printf_s corresponding to a %s specifier shall not be a null pointer.
-3 If there is a runtime-constraint violation, the printf_s function does not attempt to
- produce further output, and it is unspecified to what extent printf_s produced output
- before discovering the runtime-constraint violation.
-
-
- 381) It is not a runtime-constraint violation for the characters %n to appear in sequence in the string pointed
- at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
- format string was %%n.
-
-[<a name="p589" href="#p589">page 589</a>] (<a href="#Contents">Contents</a>)
-
-<b> Description</b>
-4 The printf_s function is equivalent to the printf function except for the explicit
- runtime-constraints listed above.
-<b> Returns</b>
-5 The printf_s function returns the number of characters transmitted, or a negative
- value if an output error, encoding error, or runtime-constraint violation occurred.
-<a name="K.3.5.3.4" href="#K.3.5.3.4"><b> K.3.5.3.4 The scanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- int scanf_s(const char * restrict format, ...);
- Runtime-constraints
-2 format shall not be a null pointer. Any argument indirected though in order to store
- converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the scanf_s function does not attempt to
- perform further input, and it is unspecified to what extent scanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The scanf_s function is equivalent to fscanf_s with the argument stdin
- interposed before the arguments to scanf_s.
-<b> Returns</b>
-5 The scanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- scanf_s function returns the number of input items assigned, which can be fewer than
- provided for, or even zero, in the event of an early matching failure.
-<a name="K.3.5.3.5" href="#K.3.5.3.5"><b> K.3.5.3.5 The snprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- int snprintf_s(char * restrict s, rsize_t n,
- const char * restrict format, ...);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. n shall neither equal zero nor be greater
- than RSIZE_MAX. The %n specifier382) (modified or not by flags, field width, or
- precision) shall not appear in the string pointed to by format. Any argument to
-[<a name="p590" href="#p590">page 590</a>] (<a href="#Contents">Contents</a>)
-
- snprintf_s corresponding to a %s specifier shall not be a null pointer. No encoding
- error shall occur.
-3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
- than zero and less than RSIZE_MAX, then the snprintf_s function sets s[0] to the
- null character.
-<b> Description</b>
-4 The snprintf_s function is equivalent to the snprintf function except for the
- explicit runtime-constraints listed above.
-5 The snprintf_s function, unlike sprintf_s, will truncate the result to fit within the
- array pointed to by s.
-<b> Returns</b>
-6 The snprintf_s function returns the number of characters that would have been
- written had n been sufficiently large, not counting the terminating null character, or a
- negative value if a runtime-constraint violation occurred. Thus, the null-terminated
- output has been completely written if and only if the returned value is nonnegative and
- less than n.
-<a name="K.3.5.3.6" href="#K.3.5.3.6"><b> K.3.5.3.6 The sprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- int sprintf_s(char * restrict s, rsize_t n,
- const char * restrict format, ...);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. n shall neither equal zero nor be greater
- than RSIZE_MAX. The number of characters (including the trailing null) required for the
- result to be written to the array pointed to by s shall not be greater than n. The %n
- specifier383) (modified or not by flags, field width, or precision) shall not appear in the
- string pointed to by format. Any argument to sprintf_s corresponding to a %s
- specifier shall not be a null pointer. No encoding error shall occur.
-
-
-
- 382) It is not a runtime-constraint violation for the characters %n to appear in sequence in the string pointed
- at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
- format string was %%n.
- 383) It is not a runtime-constraint violation for the characters %n to appear in sequence in the string pointed
- at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
- format string was %%n.
-
-[<a name="p591" href="#p591">page 591</a>] (<a href="#Contents">Contents</a>)
-
-3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
- than zero and less than RSIZE_MAX, then the sprintf_s function sets s[0] to the
- null character.
-<b> Description</b>
-4 The sprintf_s function is equivalent to the sprintf function except for the
- parameter n and the explicit runtime-constraints listed above.
-5 The sprintf_s function, unlike snprintf_s, treats a result too big for the array
- pointed to by s as a runtime-constraint violation.
-<b> Returns</b>
-6 If no runtime-constraint violation occurred, the sprintf_s function returns the number
- of characters written in the array, not counting the terminating null character. If an
- encoding error occurred, sprintf_s returns a negative value. If any other runtime-
- constraint violation occurred, sprintf_s returns zero.
-<a name="K.3.5.3.7" href="#K.3.5.3.7"><b> K.3.5.3.7 The sscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- int sscanf_s(const char * restrict s,
- const char * restrict format, ...);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. Any argument indirected though in order
- to store converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the sscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent sscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The sscanf_s function is equivalent to fscanf_s, except that input is obtained from
- a string (specified by the argument s) rather than from a stream. Reaching the end of the
- string is equivalent to encountering end-of-file for the fscanf_s function. If copying
- takes place between objects that overlap, the objects take on unspecified values.
-<b> Returns</b>
-5 The sscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- sscanf_s function returns the number of input items assigned, which can be fewer than
- provided for, or even zero, in the event of an early matching failure.
-
-[<a name="p592" href="#p592">page 592</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.5.3.8" href="#K.3.5.3.8"><b> K.3.5.3.8 The vfprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.21"><stdio.h></a>
- int vfprintf_s(FILE * restrict stream,
- const char * restrict format,
- va_list arg);
- Runtime-constraints
-2 Neither stream nor format shall be a null pointer. The %n specifier384) (modified or
- not by flags, field width, or precision) shall not appear in the string pointed to by
- format. Any argument to vfprintf_s corresponding to a %s specifier shall not be a
- null pointer.
-3 If there is a runtime-constraint violation, the vfprintf_s function does not attempt to
- produce further output, and it is unspecified to what extent vfprintf_s produced
- output before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The vfprintf_s function is equivalent to the vfprintf function except for the
- explicit runtime-constraints listed above.
-<b> Returns</b>
-5 The vfprintf_s function returns the number of characters transmitted, or a negative
- value if an output error, encoding error, or runtime-constraint violation occurred.
-<a name="K.3.5.3.9" href="#K.3.5.3.9"><b> K.3.5.3.9 The vfscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.21"><stdio.h></a>
- int vfscanf_s(FILE * restrict stream,
- const char * restrict format,
- va_list arg);
-
-
-
-
- 384) It is not a runtime-constraint violation for the characters %n to appear in sequence in the string pointed
- at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
- format string was %%n.
-
-[<a name="p593" href="#p593">page 593</a>] (<a href="#Contents">Contents</a>)
-
- Runtime-constraints
-2 Neither stream nor format shall be a null pointer. Any argument indirected though in
- order to store converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the vfscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent vfscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The vfscanf_s function is equivalent to fscanf_s, with the variable argument list
- replaced by arg, which shall have been initialized by the va_start macro (and
- possibly subsequent va_arg calls). The vfscanf_s function does not invoke the
- va_end macro.385)
-<b> Returns</b>
-5 The vfscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- vfscanf_s function returns the number of input items assigned, which can be fewer
- than provided for, or even zero, in the event of an early matching failure.
-<a name="K.3.5.3.10" href="#K.3.5.3.10"><b> K.3.5.3.10 The vprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.21"><stdio.h></a>
- int vprintf_s(const char * restrict format,
- va_list arg);
- Runtime-constraints
-2 format shall not be a null pointer. The %n specifier386) (modified or not by flags, field
- width, or precision) shall not appear in the string pointed to by format. Any argument
- to vprintf_s corresponding to a %s specifier shall not be a null pointer.
-3 If there is a runtime-constraint violation, the vprintf_s function does not attempt to
- produce further output, and it is unspecified to what extent vprintf_s produced output
- before discovering the runtime-constraint violation.
-
- 385) As the functions vfprintf_s, vfscanf_s, vprintf_s, vscanf_s, vsnprintf_s,
- vsprintf_s, and vsscanf_s invoke the va_arg macro, the value of arg after the return is
- indeterminate.
- 386) It is not a runtime-constraint violation for the characters %n to appear in sequence in the string pointed
- at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
- format string was %%n.
-
-[<a name="p594" href="#p594">page 594</a>] (<a href="#Contents">Contents</a>)
-
-<b> Description</b>
-4 The vprintf_s function is equivalent to the vprintf function except for the explicit
- runtime-constraints listed above.
-<b> Returns</b>
-5 The vprintf_s function returns the number of characters transmitted, or a negative
- value if an output error, encoding error, or runtime-constraint violation occurred.
-<a name="K.3.5.3.11" href="#K.3.5.3.11"><b> K.3.5.3.11 The vscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.21"><stdio.h></a>
- int vscanf_s(const char * restrict format,
- va_list arg);
- Runtime-constraints
-2 format shall not be a null pointer. Any argument indirected though in order to store
- converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the vscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent vscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The vscanf_s function is equivalent to scanf_s, with the variable argument list
- replaced by arg, which shall have been initialized by the va_start macro (and
- possibly subsequent va_arg calls). The vscanf_s function does not invoke the
- va_end macro.387)
-<b> Returns</b>
-5 The vscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- vscanf_s function returns the number of input items assigned, which can be fewer than
- provided for, or even zero, in the event of an early matching failure.
-
-
-
-
- 387) As the functions vfprintf_s, vfscanf_s, vprintf_s, vscanf_s, vsnprintf_s,
- vsprintf_s, and vsscanf_s invoke the va_arg macro, the value of arg after the return is
- indeterminate.
-
-[<a name="p595" href="#p595">page 595</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.5.3.12" href="#K.3.5.3.12"><b> K.3.5.3.12 The vsnprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.21"><stdio.h></a>
- int vsnprintf_s(char * restrict s, rsize_t n,
- const char * restrict format,
- va_list arg);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. n shall neither equal zero nor be greater
- than RSIZE_MAX. The %n specifier388) (modified or not by flags, field width, or
- precision) shall not appear in the string pointed to by format. Any argument to
- vsnprintf_s corresponding to a %s specifier shall not be a null pointer. No encoding
- error shall occur.
-3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
- than zero and less than RSIZE_MAX, then the vsnprintf_s function sets s[0] to the
- null character.
-<b> Description</b>
-4 The vsnprintf_s function is equivalent to the vsnprintf function except for the
- explicit runtime-constraints listed above.
-5 The vsnprintf_s function, unlike vsprintf_s, will truncate the result to fit within
- the array pointed to by s.
-<b> Returns</b>
-6 The vsnprintf_s function returns the number of characters that would have been
- written had n been sufficiently large, not counting the terminating null character, or a
- negative value if a runtime-constraint violation occurred. Thus, the null-terminated
- output has been completely written if and only if the returned value is nonnegative and
- less than n.
-
-
-
-
- 388) It is not a runtime-constraint violation for the characters %n to appear in sequence in the string pointed
- at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
- format string was %%n.
-
-[<a name="p596" href="#p596">page 596</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.5.3.13" href="#K.3.5.3.13"><b> K.3.5.3.13 The vsprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.21"><stdio.h></a>
- int vsprintf_s(char * restrict s, rsize_t n,
- const char * restrict format,
- va_list arg);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. n shall neither equal zero nor be greater
- than RSIZE_MAX. The number of characters (including the trailing null) required for the
- result to be written to the array pointed to by s shall not be greater than n. The %n
- specifier389) (modified or not by flags, field width, or precision) shall not appear in the
- string pointed to by format. Any argument to vsprintf_s corresponding to a %s
- specifier shall not be a null pointer. No encoding error shall occur.
-3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
- than zero and less than RSIZE_MAX, then the vsprintf_s function sets s[0] to the
- null character.
-<b> Description</b>
-4 The vsprintf_s function is equivalent to the vsprintf function except for the
- parameter n and the explicit runtime-constraints listed above.
-5 The vsprintf_s function, unlike vsnprintf_s, treats a result too big for the array
- pointed to by s as a runtime-constraint violation.
-<b> Returns</b>
-6 If no runtime-constraint violation occurred, the vsprintf_s function returns the
- number of characters written in the array, not counting the terminating null character. If
- an encoding error occurred, vsprintf_s returns a negative value. If any other
- runtime-constraint violation occurred, vsprintf_s returns zero.
-
-
-
-
- 389) It is not a runtime-constraint violation for the characters %n to appear in sequence in the string pointed
- at by format when those characters are not a interpreted as a %n specifier. For example, if the entire
- format string was %%n.
-
-[<a name="p597" href="#p597">page 597</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.5.3.14" href="#K.3.5.3.14"><b> K.3.5.3.14 The vsscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.21"><stdio.h></a>
- int vsscanf_s(const char * restrict s,
- const char * restrict format,
- va_list arg);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. Any argument indirected though in order
- to store converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the vsscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent vsscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The vsscanf_s function is equivalent to sscanf_s, with the variable argument list
- replaced by arg, which shall have been initialized by the va_start macro (and
- possibly subsequent va_arg calls). The vsscanf_s function does not invoke the
- va_end macro.390)
-<b> Returns</b>
-5 The vsscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- vscanf_s function returns the number of input items assigned, which can be fewer than
- provided for, or even zero, in the event of an early matching failure.
-<a name="K.3.5.4" href="#K.3.5.4"><b> K.3.5.4 Character input/output functions</b></a>
-<a name="K.3.5.4.1" href="#K.3.5.4.1"><b> K.3.5.4.1 The gets_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- char *gets_s(char *s, rsize_t n);
-
-
-
-
- 390) As the functions vfprintf_s, vfscanf_s, vprintf_s, vscanf_s, vsnprintf_s,
- vsprintf_s, and vsscanf_s invoke the va_arg macro, the value of arg after the return is
- indeterminate.
-
-[<a name="p598" href="#p598">page 598</a>] (<a href="#Contents">Contents</a>)
-
- Runtime-constraints
-2 s shall not be a null pointer. n shall neither be equal to zero nor be greater than
- RSIZE_MAX. A new-line character, end-of-file, or read error shall occur within reading
- n-1 characters from stdin.391)
-3 If there is a runtime-constraint violation, s[0] is set to the null character, and characters
- are read and discarded from stdin until a new-line character is read, or end-of-file or a
- read error occurs.
-<b> Description</b>
-4 The gets_s function reads at most one less than the number of characters specified by n
- from the stream pointed to by stdin, into the array pointed to by s. No additional
- characters are read after a new-line character (which is discarded) or after end-of-file.
- The discarded new-line character does not count towards number of characters read. A
- null character is written immediately after the last character read into the array.
-5 If end-of-file is encountered and no characters have been read into the array, or if a read
- error occurs during the operation, then s[0] is set to the null character, and the other
- elements of s take unspecified values.
- Recommended practice
-6 The fgets function allows properly-written programs to safely process input lines too
- long to store in the result array. In general this requires that callers of fgets pay
- attention to the presence or absence of a new-line character in the result array. Consider
- using fgets (along with any needed processing based on new-line characters) instead of
- gets_s.
-<b> Returns</b>
-7 The gets_s function returns s if successful. If there was a runtime-constraint violation,
- or if end-of-file is encountered and no characters have been read into the array, or if a
- read error occurs during the operation, then a null pointer is returned.
-
-
-
-
- 391) The gets_s function, unlike the historical gets function, makes it a runtime-constraint violation for
- a line of input to overflow the buffer to store it. Unlike the fgets function, gets_s maintains a
- one-to-one relationship between input lines and successful calls to gets_s. Programs that use gets
- expect such a relationship.
-
-[<a name="p599" href="#p599">page 599</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.6" href="#K.3.6"><b> K.3.6 General utilities <stdlib.h></b></a>
-1 The header <a href="#7.22"><stdlib.h></a> defines three types.
-2 The types are
- errno_t
- which is type int; and
- rsize_t
- which is the type size_t; and
- constraint_handler_t
- which has the following definition
- typedef void (*constraint_handler_t)(
- const char * restrict msg,
- void * restrict ptr,
- errno_t error);
-<a name="K.3.6.1" href="#K.3.6.1"><b> K.3.6.1 Runtime-constraint handling</b></a>
-<a name="K.3.6.1.1" href="#K.3.6.1.1"><b> K.3.6.1.1 The set_constraint_handler_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.22"><stdlib.h></a>
- constraint_handler_t set_constraint_handler_s(
- constraint_handler_t handler);
-<b> Description</b>
-2 The set_constraint_handler_s function sets the runtime-constraint handler to
- be handler. The runtime-constraint handler is the function to be called when a library
- function detects a runtime-constraint violation. Only the most recent handler registered
- with set_constraint_handler_s is called when a runtime-constraint violation
- occurs.
-3 When the handler is called, it is passed the following arguments in the following order:
- 1. A pointer to a character string describing the runtime-constraint violation.
- 2. A null pointer or a pointer to an implementation defined object.
- 3. If the function calling the handler has a return type declared as errno_t, the
- return value of the function is passed. Otherwise, a positive value of type
- errno_t is passed.
-
-
-
-[<a name="p600" href="#p600">page 600</a>] (<a href="#Contents">Contents</a>)
-
-4 The implementation has a default constraint handler that is used if no calls to the
- set_constraint_handler_s function have been made. The behavior of the
- default handler is implementation-defined, and it may cause the program to exit or abort.
-5 If the handler argument to set_constraint_handler_s is a null pointer, the
- implementation default handler becomes the current constraint handler.
-<b> Returns</b>
-6 The set_constraint_handler_s function returns a pointer to the previously
- registered handler.392)
-<a name="K.3.6.1.2" href="#K.3.6.1.2"><b> K.3.6.1.2 The abort_handler_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.22"><stdlib.h></a>
- void abort_handler_s(
- const char * restrict msg,
- void * restrict ptr,
- errno_t error);
-<b> Description</b>
-2 A pointer to the abort_handler_s function shall be a suitable argument to the
- set_constraint_handler_s function.
-3 The abort_handler_s function writes a message on the standard error stream in an
- implementation-defined format. The message shall include the string pointed to by msg.
- The abort_handler_s function then calls the abort function.393)
-<b> Returns</b>
-4 The abort_handler_s function does not return to its caller.
-
-
-
-
- 392) If the previous handler was registered by calling set_constraint_handler_s with a null
- pointer argument, a pointer to the implementation default handler is returned (not NULL).
- 393) Many implementations invoke a debugger when the abort function is called.
-
-[<a name="p601" href="#p601">page 601</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.6.1.3" href="#K.3.6.1.3"><b> K.3.6.1.3 The ignore_handler_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.22"><stdlib.h></a>
- void ignore_handler_s(
- const char * restrict msg,
- void * restrict ptr,
- errno_t error);
-<b> Description</b>
-2 A pointer to the ignore_handler_s function shall be a suitable argument to the
- set_constraint_handler_s function.
-3 The ignore_handler_s function simply returns to its caller.394)
-<b> Returns</b>
-4 The ignore_handler_s function returns no value.
-<a name="K.3.6.2" href="#K.3.6.2"><b> K.3.6.2 Communication with the environment</b></a>
-<a name="K.3.6.2.1" href="#K.3.6.2.1"><b> K.3.6.2.1 The getenv_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.22"><stdlib.h></a>
- errno_t getenv_s(size_t * restrict len,
- char * restrict value, rsize_t maxsize,
- const char * restrict name);
- Runtime-constraints
-2 name shall not be a null pointer. maxsize shall neither equal zero nor be greater than
- RSIZE_MAX. If maxsize is not equal to zero, then value shall not be a null pointer.
-3 If there is a runtime-constraint violation, the integer pointed to by len is set to 0 (if len
- is not null), and the environment list is not searched.
-<b> Description</b>
-4 The getenv_s function searches an environment list, provided by the host environment,
- for a string that matches the string pointed to by name.
-
-
- 394) If the runtime-constraint handler is set to the ignore_handler_s function, any library function in
- which a runtime-constraint violation occurs will return to its caller. The caller can determine whether
- a runtime-constraint violation occurred based on the library function's specification (usually, the
- library function returns a nonzero errno_t).
-
-[<a name="p602" href="#p602">page 602</a>] (<a href="#Contents">Contents</a>)
-
-5 If that name is found then getenv_s performs the following actions. If len is not a
- null pointer, the length of the string associated with the matched list member is stored in
- the integer pointed to by len. If the length of the associated string is less than maxsize,
- then the associated string is copied to the array pointed to by value.
-6 If that name is not found then getenv_s performs the following actions. If len is not
- a null pointer, zero is stored in the integer pointed to by len. If maxsize is greater than
- zero, then value[0] is set to the null character.
-7 The set of environment names and the method for altering the environment list are
- implementation-defined.
-<b> Returns</b>
-8 The getenv_s function returns zero if the specified name is found and the associated
- string was successfully stored in value. Otherwise, a nonzero value is returned.
-<a name="K.3.6.3" href="#K.3.6.3"><b> K.3.6.3 Searching and sorting utilities</b></a>
-1 These utilities make use of a comparison function to search or sort arrays of unspecified
- type. Where an argument declared as size_t nmemb specifies the length of the array
- for a function, if nmemb has the value zero on a call to that function, then the comparison
- function is not called, a search finds no matching element, sorting performs no
- rearrangement, and the pointer to the array may be null.
-2 The implementation shall ensure that the second argument of the comparison function
- (when called from bsearch_s), or both arguments (when called from qsort_s), are
- pointers to elements of the array.395) The first argument when called from bsearch_s
- shall equal key.
-3 The comparison function shall not alter the contents of either the array or search key. The
- implementation may reorder elements of the array between calls to the comparison
- function, but shall not otherwise alter the contents of any individual element.
-4 When the same objects (consisting of size bytes, irrespective of their current positions
- in the array) are passed more than once to the comparison function, the results shall be
- consistent with one another. That is, for qsort_s they shall define a total ordering on
- the array, and for bsearch_s the same object shall always compare the same way with
- the key.
-
-
-
-
- 395) That is, if the value passed is p, then the following expressions are always valid and nonzero:
- ((char *)p - (char *)base) % size == 0
- (char *)p >= (char *)base
- (char *)p < (char *)base + nmemb * size
-
-
-[<a name="p603" href="#p603">page 603</a>] (<a href="#Contents">Contents</a>)
-
-5 A sequence point occurs immediately before and immediately after each call to the
- comparison function, and also between any call to the comparison function and any
- movement of the objects passed as arguments to that call.
-<a name="K.3.6.3.1" href="#K.3.6.3.1"><b> K.3.6.3.1 The bsearch_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.22"><stdlib.h></a>
- void *bsearch_s(const void *key, const void *base,
- rsize_t nmemb, rsize_t size,
- int (*compar)(const void *k, const void *y,
- void *context),
- void *context);
- Runtime-constraints
-2 Neither nmemb nor size shall be greater than RSIZE_MAX. If nmemb is not equal to
- zero, then none of key, base, or compar shall be a null pointer.
-3 If there is a runtime-constraint violation, the bsearch_s function does not search the
- array.
-<b> Description</b>
-4 The bsearch_s 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.
- The size of each element of the array is specified by size.
-5 The comparison function pointed to by compar is called with three arguments. The first
- two point to the key object and to an array element, in that order. The function shall
- return an integer less than, equal to, or greater than zero if the key object is considered,
- respectively, to be less than, to match, or to be greater than the array element. The array
- shall consist of: all the elements that compare less than, all the elements that compare
- equal to, and all the elements that compare greater than the key object, in that order.396)
- The third argument to the comparison function is the context argument passed to
- bsearch_s. The sole use of context by bsearch_s is to pass it to the comparison
- function.397)
-
-
-
-
- 396) In practice, this means that the entire array has been sorted according to the comparison function.
- 397) The context argument is for the use of the comparison function in performing its duties. For
- example, it might specify a collating sequence used by the comparison function.
-
-[<a name="p604" href="#p604">page 604</a>] (<a href="#Contents">Contents</a>)
-
-<b> Returns</b>
-6 The bsearch_s function returns a pointer to a matching element of the array, or a null
- pointer if no match is found or there is a runtime-constraint violation. If two elements
- compare as equal, which element is matched is unspecified.
-<a name="K.3.6.3.2" href="#K.3.6.3.2"><b> K.3.6.3.2 The qsort_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.22"><stdlib.h></a>
- errno_t qsort_s(void *base, rsize_t nmemb, rsize_t size,
- int (*compar)(const void *x, const void *y,
- void *context),
- void *context);
- Runtime-constraints
-2 Neither nmemb nor size shall be greater than RSIZE_MAX. If nmemb is not equal to
- zero, then neither base nor compar shall be a null pointer.
-3 If there is a runtime-constraint violation, the qsort_s function does not sort the array.
-<b> Description</b>
-4 The qsort_s function sorts an array of nmemb objects, the initial element of which is
- pointed to by base. The size of each object is specified by size.
-5 The contents of the array are sorted into ascending order according to a comparison
- function pointed to by compar, which is called with three arguments. The first two
- point to the objects being compared. The function shall return an integer less than, equal
- to, or greater than zero if the first argument is considered to be respectively less than,
- equal to, or greater than the second. The third argument to the comparison function is the
- context argument passed to qsort_s. The sole use of context by qsort_s is to
- pass it to the comparison function.398)
-6 If two elements compare as equal, their relative order in the resulting sorted array is
- unspecified.
-<b> Returns</b>
-7 The qsort_s function returns zero if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-
-
-
-
- 398) The context argument is for the use of the comparison function in performing its duties. For
- example, it might specify a collating sequence used by the comparison function.
-
-[<a name="p605" href="#p605">page 605</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.6.4" href="#K.3.6.4"><b> K.3.6.4 Multibyte/wide character conversion functions</b></a>
-1 The behavior of the multibyte character functions is affected by the LC_CTYPE category
- of the current locale. For a state-dependent encoding, each function is placed into its
- initial conversion state by a call for which its character pointer argument, s, is a null
- pointer. Subsequent calls with s as other than a null pointer cause the internal conversion
- state of the function to be altered as necessary. A call with s as a null pointer causes
- these functions to set the int pointed to by their status argument to a nonzero value if
- encodings have state dependency, and zero otherwise.399) Changing the LC_CTYPE
- category causes the conversion state of these functions to be indeterminate.
-<a name="K.3.6.4.1" href="#K.3.6.4.1"><b> K.3.6.4.1 The wctomb_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.22"><stdlib.h></a>
- errno_t wctomb_s(int * restrict status,
- char * restrict s,
- rsize_t smax,
- wchar_t wc);
- Runtime-constraints
-2 Let n denote the number of bytes needed to represent the multibyte character
- corresponding to the wide character given by wc (including any shift sequences).
-3 If s is not a null pointer, then smax shall not be less than n, and smax shall not be
- greater than RSIZE_MAX. If s is a null pointer, then smax shall equal zero.
-4 If there is a runtime-constraint violation, wctomb_s does not modify the int pointed to
- by status, and if s is not a null pointer, no more than smax elements in the array
- pointed to by s will be accessed.
-<b> Description</b>
-5 The wctomb_s function determines n and stores the multibyte character representation
- of wc in the array whose first element is pointed to by s (if s is not a null pointer). The
- number of characters stored never exceeds MB_CUR_MAX or smax. If wc is a null wide
- character, a null byte is stored, preceded by any shift sequence needed to restore the
- initial shift state, and the function is left in the initial conversion state.
-6 The implementation shall behave as if no library function calls the wctomb_s function.
-
-
-
-
- 399) If the locale employs special bytes to change the shift state, these bytes do not produce separate wide
- character codes, but are grouped with an adjacent multibyte character.
-
-[<a name="p606" href="#p606">page 606</a>] (<a href="#Contents">Contents</a>)
-
-7 If s is a null pointer, the wctomb_s function stores into the int pointed to by status a
- nonzero or zero value, if multibyte character encodings, respectively, do or do not have
- state-dependent encodings.
-8 If s is not a null pointer, the wctomb_s function stores into the int pointed to by
- status either n or -1 if wc, respectively, does or does not correspond to a valid
- multibyte character.
-9 In no case will the int pointed to by status be set to a value greater than the
- MB_CUR_MAX macro.
-<b> Returns</b>
-10 The wctomb_s function returns zero if successful, and a nonzero value if there was a
- runtime-constraint violation or wc did not correspond to a valid multibyte character.
-<a name="K.3.6.5" href="#K.3.6.5"><b> K.3.6.5 Multibyte/wide string conversion functions</b></a>
-1 The behavior of the multibyte string functions is affected by the LC_CTYPE category of
- the current locale.
-<a name="K.3.6.5.1" href="#K.3.6.5.1"><b> K.3.6.5.1 The mbstowcs_s function</b></a>
-<b> Synopsis</b>
-1 #include <a href="#7.22"><stdlib.h></a>
- errno_t mbstowcs_s(size_t * restrict retval,
- wchar_t * restrict dst, rsize_t dstmax,
- const char * restrict src, rsize_t len);
- Runtime-constraints
-2 Neither retval nor src shall be a null pointer. If dst is not a null pointer, then
- neither len nor dstmax shall be greater than RSIZE_MAX. If dst is a null pointer,
- then dstmax shall equal zero. If dst is not a null pointer, then dstmax shall not equal
- zero. If dst is not a null pointer and len is not less than dstmax, then a null character
- shall occur within the first dstmax multibyte characters of the array pointed to by src.
-3 If there is a runtime-constraint violation, then mbstowcs_s does the following. If
- retval is not a null pointer, then mbstowcs_s sets *retval to (size_t)(-1). If
- dst is not a null pointer and dstmax is greater than zero and less than RSIZE_MAX,
- then mbstowcs_s sets dst[0] to the null wide character.
-<b> Description</b>
-4 The mbstowcs_s function converts a sequence of multibyte characters that begins in
- the initial shift state from the array pointed to by src into a sequence of corresponding
- wide characters. If dst is not a null pointer, the converted characters are stored into the
- array pointed to by dst. Conversion continues up to and including a terminating null
- character, which is also stored. Conversion stops earlier in two cases: when a sequence of
-[<a name="p607" href="#p607">page 607</a>] (<a href="#Contents">Contents</a>)
-
- bytes is encountered that does not form a valid multibyte character, or (if dst is not a
- null pointer) when len wide characters have been stored into the array pointed to by
- dst.400) If dst is not a null pointer and no null wide character was stored into the array
- pointed to by dst, then dst[len] is set to the null wide character. Each conversion
- takes place as if by a call to the mbrtowc function.
-5 Regardless of whether dst is or is not a null pointer, if the input conversion encounters a
- sequence of bytes that do not form a valid multibyte character, an encoding error occurs:
- the mbstowcs_s function stores the value (size_t)(-1) into *retval.
- Otherwise, the mbstowcs_s function stores into *retval the number of multibyte
- characters successfully converted, not including the terminating null character (if any).
-6 All elements following the terminating null wide character (if any) written by
- mbstowcs_s in the array of dstmax wide characters pointed to by dst take
- unspecified values when mbstowcs_s returns.401)
-7 If copying takes place between objects that overlap, the objects take on unspecified
- values.
-<b> Returns</b>
-8 The mbstowcs_s function returns zero if no runtime-constraint violation and no
- encoding error occurred. Otherwise, a nonzero value is returned.
-<a name="K.3.6.5.2" href="#K.3.6.5.2"><b> K.3.6.5.2 The wcstombs_s function</b></a>
-<b> Synopsis</b>
-1 #include <a href="#7.22"><stdlib.h></a>
- errno_t wcstombs_s(size_t * restrict retval,
- char * restrict dst, rsize_t dstmax,
- const wchar_t * restrict src, rsize_t len);
- Runtime-constraints
-2 Neither retval nor src shall be a null pointer. If dst is not a null pointer, then
- neither len nor dstmax shall be greater than RSIZE_MAX. If dst is a null pointer,
- then dstmax shall equal zero. If dst is not a null pointer, then dstmax shall not equal
- zero. If dst is not a null pointer and len is not less than dstmax, then the conversion
- shall have been stopped (see below) because a terminating null wide character was
- reached or because an encoding error occurred.
-
-
-
-
- 400) Thus, the value of len is ignored if dst is a null pointer.
- 401) This allows an implementation to attempt converting the multibyte string before discovering a
- terminating null character did not occur where required.
-
-[<a name="p608" href="#p608">page 608</a>] (<a href="#Contents">Contents</a>)
-
-3 If there is a runtime-constraint violation, then wcstombs_s does the following. If
- retval is not a null pointer, then wcstombs_s sets *retval to (size_t)(-1). If
- dst is not a null pointer and dstmax is greater than zero and less than RSIZE_MAX,
- then wcstombs_s sets dst[0] to the null character.
-<b> Description</b>
-4 The wcstombs_s function converts a sequence of wide characters from the array
- pointed to by src into a sequence of corresponding multibyte characters that begins in
- the initial shift state. If dst is not a null pointer, the converted characters are then stored
- into the array pointed to by dst. Conversion continues up to and including a terminating
- null wide character, which is also stored. Conversion stops earlier in two cases:
- -- when a wide character is reached that does not correspond to a valid multibyte
- character;
- -- (if dst is not a null pointer) when the next multibyte character would exceed the
- limit of n total bytes to be stored into the array pointed to by dst. If the wide
- character being converted is the null wide character, then n is the lesser of len or
- dstmax. Otherwise, n is the lesser of len or dstmax-1.
- If the conversion stops without converting a null wide character and dst is not a null
- pointer, then a null character is stored into the array pointed to by dst immediately
- following any multibyte characters already stored. Each conversion takes place as if by a
- call to the wcrtomb function.402)
-5 Regardless of whether dst is or is not a null pointer, if the input conversion encounters a
- wide character that does not correspond to a valid multibyte character, an encoding error
- occurs: the wcstombs_s function stores the value (size_t)(-1) into *retval.
- Otherwise, the wcstombs_s function stores into *retval the number of bytes in the
- resulting multibyte character sequence, not including the terminating null character (if
- any).
-6 All elements following the terminating null character (if any) written by wcstombs_s
- in the array of dstmax elements pointed to by dst take unspecified values when
- wcstombs_s returns.403)
-7 If copying takes place between objects that overlap, the objects take on unspecified
- values.
-
-
- 402) If conversion stops because a terminating null wide character has been reached, the bytes stored
- include those necessary to reach the initial shift state immediately before the null byte. However, if
- the conversion stops before a terminating null wide character has been reached, the result will be null
- terminated, but might not end in the initial shift state.
- 403) When len is not less than dstmax, the implementation might fill the array before discovering a
- runtime-constraint violation.
-
-[<a name="p609" href="#p609">page 609</a>] (<a href="#Contents">Contents</a>)
-
-<b> Returns</b>
-8 The wcstombs_s function returns zero if no runtime-constraint violation and no
- encoding error occurred. Otherwise, a nonzero value is returned.
-<a name="K.3.7" href="#K.3.7"><b> K.3.7 String handling <string.h></b></a>
-1 The header <a href="#7.23"><string.h></a> defines two types.
-2 The types are
- errno_t
- which is type int; and
- rsize_t
- which is the type size_t.
-<a name="K.3.7.1" href="#K.3.7.1"><b> K.3.7.1 Copying functions</b></a>
-<a name="K.3.7.1.1" href="#K.3.7.1.1"><b> K.3.7.1.1 The memcpy_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- errno_t memcpy_s(void * restrict s1, rsize_t s1max,
- const void * restrict s2, rsize_t n);
- Runtime-constraints
-2 Neither s1 nor s2 shall be a null pointer. Neither s1max nor n shall be greater than
- RSIZE_MAX. n shall not be greater than s1max. Copying shall not take place between
- objects that overlap.
-3 If there is a runtime-constraint violation, the memcpy_s function stores zeros in the first
- s1max characters of the object pointed to by s1 if s1 is not a null pointer and s1max is
- not greater than RSIZE_MAX.
-<b> Description</b>
-4 The memcpy_s function copies n characters from the object pointed to by s2 into the
- object pointed to by s1.
-<b> Returns</b>
-5 The memcpy_s function returns zero if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-
-
-
-
-[<a name="p610" href="#p610">page 610</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.7.1.2" href="#K.3.7.1.2"><b> K.3.7.1.2 The memmove_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- errno_t memmove_s(void *s1, rsize_t s1max,
- const void *s2, rsize_t n);
- Runtime-constraints
-2 Neither s1 nor s2 shall be a null pointer. Neither s1max nor n shall be greater than
- RSIZE_MAX. n shall not be greater than s1max.
-3 If there is a runtime-constraint violation, the memmove_s function stores zeros in the
- first s1max characters of the object pointed to by s1 if s1 is not a null pointer and
- s1max is not greater than RSIZE_MAX.
-<b> Description</b>
-4 The memmove_s function copies n characters from the object pointed to by s2 into the
- object pointed to by s1. This 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 or s2, and then the n characters from the temporary
- array are copied into the object pointed to by s1.
-<b> Returns</b>
-5 The memmove_s function returns zero if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-<a name="K.3.7.1.3" href="#K.3.7.1.3"><b> K.3.7.1.3 The strcpy_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- errno_t strcpy_s(char * restrict s1,
- rsize_t s1max,
- const char * restrict s2);
- Runtime-constraints
-2 Neither s1 nor s2 shall be a null pointer. s1max shall not be greater than RSIZE_MAX.
- s1max shall not equal zero. s1max shall be greater than strnlen_s(s2, s1max).
- Copying shall not take place between objects that overlap.
-3 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
- greater than zero and not greater than RSIZE_MAX, then strcpy_s sets s1[0] to the
- null character.
-
-[<a name="p611" href="#p611">page 611</a>] (<a href="#Contents">Contents</a>)
-
-<b> Description</b>
-4 The strcpy_s function copies the string pointed to by s2 (including the terminating
- null character) into the array pointed to by s1.
-5 All elements following the terminating null character (if any) written by strcpy_s in
- the array of s1max characters pointed to by s1 take unspecified values when
- strcpy_s returns.404)
-<b> Returns</b>
-6 The strcpy_s function returns zero405) if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-<a name="K.3.7.1.4" href="#K.3.7.1.4"><b> K.3.7.1.4 The strncpy_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- errno_t strncpy_s(char * restrict s1,
- rsize_t s1max,
- const char * restrict s2,
- rsize_t n);
- Runtime-constraints
-2 Neither s1 nor s2 shall be a null pointer. Neither s1max nor n shall be greater than
- RSIZE_MAX. s1max shall not equal zero. If n is not less than s1max, then s1max
- shall be greater than strnlen_s(s2, s1max). Copying shall not take place between
- objects that overlap.
-3 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
- greater than zero and not greater than RSIZE_MAX, then strncpy_s sets s1[0] to the
- null character.
-<b> Description</b>
-4 The strncpy_s function copies not more than n successive characters (characters that
- follow a null character are not copied) from the array pointed to by s2 to the array
- pointed to by s1. If no null character was copied from s2, then s1[n] is set to a null
- character.
-
-
- 404) This allows an implementation to copy characters from s2 to s1 while simultaneously checking if
- any of those characters are null. Such an approach might write a character to every element of s1
- before discovering that the first element should be set to the null character.
- 405) A zero return value implies that all of the requested characters from the string pointed to by s2 fit
- within the array pointed to by s1 and that the result in s1 is null terminated.
-
-[<a name="p612" href="#p612">page 612</a>] (<a href="#Contents">Contents</a>)
-
-5 All elements following the terminating null character (if any) written by strncpy_s in
- the array of s1max characters pointed to by s1 take unspecified values when
- strncpy_s returns.406)
-<b> Returns</b>
-6 The strncpy_s function returns zero407) if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-7 EXAMPLE 1 The strncpy_s function can be used to copy a string without the danger that the result
- will not be null terminated or that characters will be written past the end of the destination array.
- #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- /* ... */
- char src1[100] = "hello";
- char src2[7] = {'g', 'o', 'o', 'd', 'b', 'y', 'e'};
- char dst1[6], dst2[5], dst3[5];
- int r1, r2, r3;
- r1 = strncpy_s(dst1, 6, src1, 100);
- r2 = strncpy_s(dst2, 5, src2, 7);
- r3 = strncpy_s(dst3, 5, src2, 4);
- The first call will assign to r1 the value zero and to dst1 the sequence hello\0.
- The second call will assign to r2 a nonzero value and to dst2 the sequence \0.
- The third call will assign to r3 the value zero and to dst3 the sequence good\0.
-
-<a name="K.3.7.2" href="#K.3.7.2"><b> K.3.7.2 Concatenation functions</b></a>
-<a name="K.3.7.2.1" href="#K.3.7.2.1"><b> K.3.7.2.1 The strcat_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- errno_t strcat_s(char * restrict s1,
- rsize_t s1max,
- const char * restrict s2);
- Runtime-constraints
-2 Let m denote the value s1max - strnlen_s(s1, s1max) upon entry to
- strcat_s.
-
-
-
-
- 406) This allows an implementation to copy characters from s2 to s1 while simultaneously checking if
- any of those characters are null. Such an approach might write a character to every element of s1
- before discovering that the first element should be set to the null character.
- 407) A zero return value implies that all of the requested characters from the string pointed to by s2 fit
- within the array pointed to by s1 and that the result in s1 is null terminated.
-
-[<a name="p613" href="#p613">page 613</a>] (<a href="#Contents">Contents</a>)
-
-3 Neither s1 nor s2 shall be a null pointer. s1max shall not be greater than RSIZE_MAX.
- s1max shall not equal zero. m shall not equal zero.408) m shall be greater than
- strnlen_s(s2, m). Copying shall not take place between objects that overlap.
-4 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
- greater than zero and not greater than RSIZE_MAX, then strcat_s sets s1[0] to the
- null character.
-<b> Description</b>
-5 The strcat_s 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. The initial character
- from s2 overwrites the null character at the end of s1.
-6 All elements following the terminating null character (if any) written by strcat_s in
- the array of s1max characters pointed to by s1 take unspecified values when
- strcat_s returns.409)
-<b> Returns</b>
-7 The strcat_s function returns zero410) if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-<a name="K.3.7.2.2" href="#K.3.7.2.2"><b> K.3.7.2.2 The strncat_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- errno_t strncat_s(char * restrict s1,
- rsize_t s1max,
- const char * restrict s2,
- rsize_t n);
- Runtime-constraints
-2 Let m denote the value s1max - strnlen_s(s1, s1max) upon entry to
- strncat_s.
-3 Neither s1 nor s2 shall be a null pointer. Neither s1max nor n shall be greater than
- RSIZE_MAX. s1max shall not equal zero. m shall not equal zero.411) If n is not less
-
-
- 408) Zero means that s1 was not null terminated upon entry to strcat_s.
- 409) This allows an implementation to append characters from s2 to s1 while simultaneously checking if
- any of those characters are null. Such an approach might write a character to every element of s1
- before discovering that the first element should be set to the null character.
- 410) A zero return value implies that all of the requested characters from the string pointed to by s2 were
- appended to the string pointed to by s1 and that the result in s1 is null terminated.
-
-[<a name="p614" href="#p614">page 614</a>] (<a href="#Contents">Contents</a>)
-
- than m, then m shall be greater than strnlen_s(s2, m). Copying shall not take
- place between objects that overlap.
-4 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
- greater than zero and not greater than RSIZE_MAX, then strncat_s sets s1[0] to the
- null character.
-<b> Description</b>
-5 The strncat_s function appends not more than n successive characters (characters
- that follow a null character are not copied) from the array pointed to by s2 to the end of
- the string pointed to by s1. The initial character from s2 overwrites the null character at
- the end of s1. If no null character was copied from s2, then s1[s1max-m+n] is set to
- a null character.
-6 All elements following the terminating null character (if any) written by strncat_s in
- the array of s1max characters pointed to by s1 take unspecified values when
- strncat_s returns.412)
-<b> Returns</b>
-7 The strncat_s function returns zero413) if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-8 EXAMPLE 1 The strncat_s function can be used to copy a string without the danger that the result
- will not be null terminated or that characters will be written past the end of the destination array.
- #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- /* ... */
- char s1[100] = "good";
- char s2[6] = "hello";
- char s3[6] = "hello";
- char s4[7] = "abc";
- char s5[1000] = "bye";
- int r1, r2, r3, r4;
- r1 = strncat_s(s1, 100, s5, 1000);
- r2 = strncat_s(s2, 6, "", 1);
- r3 = strncat_s(s3, 6, "X", 2);
- r4 = strncat_s(s4, 7, "defghijklmn", 3);
- After the first call r1 will have the value zero and s1 will contain the sequence goodbye\0.
-
-
-
- 411) Zero means that s1 was not null terminated upon entry to strncat_s.
- 412) This allows an implementation to append characters from s2 to s1 while simultaneously checking if
- any of those characters are null. Such an approach might write a character to every element of s1
- before discovering that the first element should be set to the null character.
- 413) A zero return value implies that all of the requested characters from the string pointed to by s2 were
- appended to the string pointed to by s1 and that the result in s1 is null terminated.
-
-[<a name="p615" href="#p615">page 615</a>] (<a href="#Contents">Contents</a>)
-
- After the second call r2 will have the value zero and s2 will contain the sequence hello\0.
- After the third call r3 will have a nonzero value and s3 will contain the sequence \0.
- After the fourth call r4 will have the value zero and s4 will contain the sequence abcdef\0.
-
-<a name="K.3.7.3" href="#K.3.7.3"><b> K.3.7.3 Search functions</b></a>
-<a name="K.3.7.3.1" href="#K.3.7.3.1"><b> K.3.7.3.1 The strtok_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- char *strtok_s(char * restrict s1,
- rsize_t * restrict s1max,
- const char * restrict s2,
- char ** restrict ptr);
- Runtime-constraints
-2 None of s1max, s2, or ptr shall be a null pointer. If s1 is a null pointer, then *ptr
- shall not be a null pointer. The value of *s1max shall not be greater than RSIZE_MAX.
- The end of the token found shall occur within the first *s1max characters of s1 for the
- first call, and shall occur within the first *s1max characters of where searching resumes
- on subsequent calls.
-3 If there is a runtime-constraint violation, the strtok_s function does not indirect
- through the s1 or s2 pointers, and does not store a value in the object pointed to by ptr.
-<b> Description</b>
-4 A sequence of calls to the strtok_s 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. The fourth argument points to a caller-provided char pointer into which the
- strtok_s function stores information necessary for it to continue scanning the same
- string.
-5 The first call in a sequence has a non-null first argument and s1max points to an object
- whose value is the number of elements in the character array pointed to by the first
- argument. The first call stores an initial value in the object pointed to by ptr and
- updates the value pointed to by s1max to reflect the number of elements that remain in
- relation to ptr. Subsequent calls in the sequence have a null first argument and the
- objects pointed to by s1max and ptr are required to have the values stored by the
- previous call in the sequence, which are then updated. The separator string pointed to by
- s2 may be different from call to call.
-6 The first call in the sequence searches the string pointed to by s1 for the first character
- that is not contained in the current separator string pointed to by s2. If no such character
- is found, then there are no tokens in the string pointed to by s1 and the strtok_s
- function returns a null pointer. If such a character is found, it is the start of the first token.
-[<a name="p616" href="#p616">page 616</a>] (<a href="#Contents">Contents</a>)
-
-7 The strtok_s function then searches from there for the first character in s1 that is
- contained in the current separator string. If no such character is found, the current token
- extends to the end of the string pointed to by s1, and subsequent searches in the same
- string for a token return a null pointer. If such a character is found, it is overwritten by a
- null character, which terminates the current token.
-8 In all cases, the strtok_s function stores sufficient information in the pointer pointed
- to by ptr so that subsequent calls, with a null pointer for s1 and the unmodified pointer
- value for ptr, shall start searching just past the element overwritten by a null character
- (if any).
-<b> Returns</b>
-9 The strtok_s function returns a pointer to the first character of a token, or a null
- pointer if there is no token or there is a runtime-constraint violation.
-10 EXAMPLE
- #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- static char str1[] = "?a???b,,,#c";
- static char str2[] = "\t \t";
- char *t, *ptr1, *ptr2;
- rsize_t max1 = sizeof(str1);
- rsize_t max2 = sizeof(str2);
- t = strtok_s(str1, &max1, "?", &ptr1); // t points to the token "a"
- t = strtok_s(NULL, &max1, ",", &ptr1); // t points to the token "??b"
- t = strtok_s(str2, &max2, " \t", &ptr2); // t is a null pointer
- t = strtok_s(NULL, &max1, "#,", &ptr1); // t points to the token "c"
- t = strtok_s(NULL, &max1, "?", &ptr1); // t is a null pointer
-
-<a name="K.3.7.4" href="#K.3.7.4"><b> K.3.7.4 Miscellaneous functions</b></a>
-<a name="K.3.7.4.1" href="#K.3.7.4.1"><b> K.3.7.4.1 The memset_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- errno_t memset_s(void *s, rsize_t smax, int c, rsize_t n)
- Runtime-constraints
-2 s shall not be a null pointer. Neither smax nor n shall be greater than RSIZE_MAX. n
- shall not be greater than smax.
-3 If there is a runtime-constraint violation, then if s is not a null pointer and smax is not
- greater than RSIZE_MAX, the memset_s function stores the value of c (converted to an
- unsigned char) into each of the first smax characters of the object pointed to by s.
-
-
-
-[<a name="p617" href="#p617">page 617</a>] (<a href="#Contents">Contents</a>)
-
-<b> Description</b>
-4 The memset_s 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. Unlike memset, any call to
- the memset_s function shall be evaluated strictly according to the rules of the abstract
- machine as described in (<a href="#5.1.2.3">5.1.2.3</a>). That is, any call to the memset_s function shall
- assume that the memory indicated by s and n may be accessible in the future and thus
- must contain the values indicated by c.
-<b> Returns</b>
-5 The memset_s function returns zero if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-<a name="K.3.7.4.2" href="#K.3.7.4.2"><b> K.3.7.4.2 The strerror_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- errno_t strerror_s(char *s, rsize_t maxsize,
- errno_t errnum);
- Runtime-constraints
-2 s shall not be a null pointer. maxsize shall not be greater than RSIZE_MAX.
- maxsize shall not equal zero.
-3 If there is a runtime-constraint violation, then the array (if any) pointed to by s is not
- modified.
-<b> Description</b>
-4 The strerror_s function maps the number in errnum to a locale-specific message
- string. Typically, the values for errnum come from errno, but strerror_s shall
- map any value of type int to a message.
-5 If the length of the desired string is less than maxsize, then the string is copied to the
- array pointed to by s.
-6 Otherwise, if maxsize is greater than zero, then maxsize-1 characters are copied
- from the string to the array pointed to by s and then s[maxsize-1] is set to the null
- character. Then, if maxsize is greater than 3, then s[maxsize-2],
- s[maxsize-3], and s[maxsize-4] are set to the character period (.).
-<b> Returns</b>
-7 The strerror_s function returns zero if the length of the desired string was less than
- maxsize and there was no runtime-constraint violation. Otherwise, the strerror_s
- function returns a nonzero value.
-
-[<a name="p618" href="#p618">page 618</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.7.4.3" href="#K.3.7.4.3"><b> K.3.7.4.3 The strerrorlen_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- size_t strerrorlen_s(errno_t errnum);
-<b> Description</b>
-2 The strerrorlen_s function calculates the length of the (untruncated) locale-specific
- message string that the strerror_s function maps to errnum.
-<b> Returns</b>
-3 The strerrorlen_s function returns the number of characters (not including the null
- character) in the full message string.
-<a name="K.3.7.4.4" href="#K.3.7.4.4"><b> K.3.7.4.4 The strnlen_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.23"><string.h></a>
- size_t strnlen_s(const char *s, size_t maxsize);
-<b> Description</b>
-2 The strnlen_s function computes the length of the string pointed to by s.
-<b> Returns</b>
-3 If s is a null pointer,414) then the strnlen_s function returns zero.
-4 Otherwise, the strnlen_s function returns the number of characters that precede the
- terminating null character. If there is no null character in the first maxsize characters of
- s then strnlen_s returns maxsize. At most the first maxsize characters of s shall
- be accessed by strnlen_s.
-
-
-
-
- 414) Note that the strnlen_s function has no runtime-constraints. This lack of runtime-constraints
- along with the values returned for a null pointer or an unterminated string argument make
- strnlen_s useful in algorithms that gracefully handle such exceptional data.
-
-[<a name="p619" href="#p619">page 619</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.8" href="#K.3.8"><b> K.3.8 Date and time <time.h></b></a>
-1 The header <a href="#7.26"><time.h></a> defines two types.
-2 The types are
- errno_t
- which is type int; and
- rsize_t
- which is the type size_t.
-<a name="K.3.8.1" href="#K.3.8.1"><b> K.3.8.1 Components of time</b></a>
-1 A broken-down time is normalized if the values of the members of the tm structure are in
- their normal rages.415)
-<a name="K.3.8.2" href="#K.3.8.2"><b> K.3.8.2 Time conversion functions</b></a>
-1 Like the strftime function, the asctime_s and ctime_s functions do not return a
- pointer to a static object, and other library functions are permitted to call them.
-<a name="K.3.8.2.1" href="#K.3.8.2.1"><b> K.3.8.2.1 The asctime_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.26"><time.h></a>
- errno_t asctime_s(char *s, rsize_t maxsize,
- const struct tm *timeptr);
- Runtime-constraints
-2 Neither s nor timeptr shall be a null pointer. maxsize shall not be less than 26 and
- shall not be greater than RSIZE_MAX. The broken-down time pointed to by timeptr
- shall be normalized. The calendar year represented by the broken-down time pointed to
- by timeptr shall not be less than calendar year 0 and shall not be greater than calendar
- year 9999.
-3 If there is a runtime-constraint violation, there is no attempt to convert the time, and
- s[0] is set to a null character if s is not a null pointer and maxsize is not zero and is
- not greater than RSIZE_MAX.
-<b> Description</b>
-4 The asctime_s function converts the normalized broken-down time in the structure
- pointed to by timeptr into a 26 character (including the null character) string in the
-
-
- 415) The normal ranges are defined in <a href="#7.26.1">7.26.1</a>.
-
-[<a name="p620" href="#p620">page 620</a>] (<a href="#Contents">Contents</a>)
-
- form
- Sun Sep 16 01:03:52 1973\n\0
- The fields making up this string are (in order):
- 1. The name of the day of the week represented by timeptr->tm_wday using the
- following three character weekday names: Sun, Mon, Tue, Wed, Thu, Fri, and Sat.
- 2. The character space.
- 3. The name of the month represented by timeptr->tm_mon using the following
- three character month names: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct,
- Nov, and Dec.
- 4. The character space.
- 5. The value of timeptr->tm_mday as if printed using the fprintf format
- "%2d".
- 6. The character space.
- 7. The value of timeptr->tm_hour as if printed using the fprintf format
- "%.2d".
- 8. The character colon.
- 9. The value of timeptr->tm_min as if printed using the fprintf format
- "%.2d".
- 10. The character colon.
- 11. The value of timeptr->tm_sec as if printed using the fprintf format
- "%.2d".
- 12. The character space.
- 13. The value of timeptr->tm_year + 1900 as if printed using the fprintf
- format "%4d".
- 14. The character new line.
- 15. The null character.
- Recommended practice
- The strftime function allows more flexible formatting and supports locale-specific
- behavior. If you do not require the exact form of the result string produced by the
- asctime_s function, consider using the strftime function instead.
-<b> Returns</b>
-5 The asctime_s function returns zero if the time was successfully converted and stored
- into the array pointed to by s. Otherwise, it returns a nonzero value.
-[<a name="p621" href="#p621">page 621</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.8.2.2" href="#K.3.8.2.2"><b> K.3.8.2.2 The ctime_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.26"><time.h></a>
- errno_t ctime_s(char *s, rsize_t maxsize,
- const time_t *timer);
- Runtime-constraints
-2 Neither s nor timer shall be a null pointer. maxsize shall not be less than 26 and
- shall not be greater than RSIZE_MAX.
-3 If there is a runtime-constraint violation, s[0] is set to a null character if s is not a null
- pointer and maxsize is not equal zero and is not greater than RSIZE_MAX.
-<b> Description</b>
-4 The ctime_s function converts the calendar time pointed to by timer to local time in
- the form of a string. It is equivalent to
- asctime_s(s, maxsize, localtime_s(timer))
- Recommended practice
- The strftime function allows more flexible formatting and supports locale-specific
- behavior. If you do not require the exact form of the result string produced by the
- ctime_s function, consider using the strftime function instead.
-<b> Returns</b>
-5 The ctime_s function returns zero if the time was successfully converted and stored
- into the array pointed to by s. Otherwise, it returns a nonzero value.
-<a name="K.3.8.2.3" href="#K.3.8.2.3"><b> K.3.8.2.3 The gmtime_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.26"><time.h></a>
- struct tm *gmtime_s(const time_t * restrict timer,
- struct tm * restrict result);
- Runtime-constraints
-2 Neither timer nor result shall be a null pointer.
-3 If there is a runtime-constraint violation, there is no attempt to convert the time.
-<b> Description</b>
-4 The gmtime_s function converts the calendar time pointed to by timer into a broken-
- down time, expressed as UTC. The broken-down time is stored in the structure pointed
-[<a name="p622" href="#p622">page 622</a>] (<a href="#Contents">Contents</a>)
-
- to by result.
-<b> Returns</b>
-5 The gmtime_s function returns result, or a null pointer if the specified time cannot
- be converted to UTC or there is a runtime-constraint violation.
-<a name="K.3.8.2.4" href="#K.3.8.2.4"><b> K.3.8.2.4 The localtime_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.26"><time.h></a>
- struct tm *localtime_s(const time_t * restrict timer,
- struct tm * restrict result);
- Runtime-constraints
-2 Neither timer nor result shall be a null pointer.
-3 If there is a runtime-constraint violation, there is no attempt to convert the time.
-<b> Description</b>
-4 The localtime_s function converts the calendar time pointed to by timer into a
- broken-down time, expressed as local time. The broken-down time is stored in the
- structure pointed to by result.
-<b> Returns</b>
-5 The localtime_s function returns result, or a null pointer if the specified time
- cannot be converted to local time or there is a runtime-constraint violation.
-<a name="K.3.9" href="#K.3.9"><b> K.3.9 Extended multibyte and wide character utilities <wchar.h></b></a>
-1 The header <a href="#7.28"><wchar.h></a> defines two types.
-2 The types are
- errno_t
- which is type int; and
- rsize_t
- which is the type size_t.
-3 Unless explicitly stated otherwise, if the execution of a function described in this
- subclause causes copying to take place between objects that overlap, the objects take on
- unspecified values.
-
-
-
-
-[<a name="p623" href="#p623">page 623</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.9.1" href="#K.3.9.1"><b> K.3.9.1 Formatted wide character input/output functions</b></a>
-<a name="K.3.9.1.1" href="#K.3.9.1.1"><b> K.3.9.1.1 The fwprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- int fwprintf_s(FILE * restrict stream,
- const wchar_t * restrict format, ...);
- Runtime-constraints
-2 Neither stream nor format shall be a null pointer. The %n specifier416) (modified or
- not by flags, field width, or precision) shall not appear in the wide string pointed to by
- format. Any argument to fwprintf_s corresponding to a %s specifier shall not be a
- null pointer.
-3 If there is a runtime-constraint violation, the fwprintf_s function does not attempt to
- produce further output, and it is unspecified to what extent fwprintf_s produced
- output before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The fwprintf_s function is equivalent to the fwprintf function except for the
- explicit runtime-constraints listed above.
-<b> Returns</b>
-5 The fwprintf_s function returns the number of wide characters transmitted, or a
- negative value if an output error, encoding error, or runtime-constraint violation occurred.
-<a name="K.3.9.1.2" href="#K.3.9.1.2"><b> K.3.9.1.2 The fwscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.21"><stdio.h></a>
- #include <a href="#7.28"><wchar.h></a>
- int fwscanf_s(FILE * restrict stream,
- const wchar_t * restrict format, ...);
- Runtime-constraints
-2 Neither stream nor format shall be a null pointer. Any argument indirected though in
- order to store converted input shall not be a null pointer.
-
-
- 416) It is not a runtime-constraint violation for the wide characters %n to appear in sequence in the wide
- string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
- example, if the entire format string was L"%%n".
-
-[<a name="p624" href="#p624">page 624</a>] (<a href="#Contents">Contents</a>)
-
-3 If there is a runtime-constraint violation, the fwscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent fwscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The fwscanf_s function is equivalent to fwscanf except that the c, s, and [
- conversion specifiers apply to a pair of arguments (unless assignment suppression is
- indicated by a *). The first of these arguments is the same as for fwscanf. That
- argument is immediately followed in the argument list by the second argument, which has
- type size_t and gives the number of elements in the array pointed to by the first
- argument of the pair. If the first argument points to a scalar object, it is considered to be
- an array of one element.417)
-5 A matching failure occurs if the number of elements in a receiving object is insufficient to
- hold the converted input (including any trailing null character).
-<b> Returns</b>
-6 The fwscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- fwscanf_s function returns the number of input items assigned, which can be fewer
- than provided for, or even zero, in the event of an early matching failure.
-<a name="K.3.9.1.3" href="#K.3.9.1.3"><b> K.3.9.1.3 The snwprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- int snwprintf_s(wchar_t * restrict s,
- rsize_t n,
- const wchar_t * restrict format, ...);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. n shall neither equal zero nor be greater
- than RSIZE_MAX. The %n specifier418) (modified or not by flags, field width, or
-
- 417) If the format is known at translation time, an implementation may issue a diagnostic for any argument
- used to store the result from a c, s, or [ conversion specifier if that argument is not followed by an
- argument of a type compatible with rsize_t. A limited amount of checking may be done if even if
- the format is not known at translation time. For example, an implementation may issue a diagnostic
- for each argument after format that has of type pointer to one of char, signed char,
- unsigned char, or void that is not followed by an argument of a type compatible with
- rsize_t. The diagnostic could warn that unless the pointer is being used with a conversion specifier
- using the hh length modifier, a length argument must follow the pointer argument. Another useful
- diagnostic could flag any non-pointer argument following format that did not have a type
- compatible with rsize_t.
-
-[<a name="p625" href="#p625">page 625</a>] (<a href="#Contents">Contents</a>)
-
- precision) shall not appear in the wide string pointed to by format. Any argument to
- snwprintf_s corresponding to a %s specifier shall not be a null pointer. No encoding
- error shall occur.
-3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
- than zero and less than RSIZE_MAX, then the snwprintf_s function sets s[0] to the
- null wide character.
-<b> Description</b>
-4 The snwprintf_s function is equivalent to the swprintf function except for the
- explicit runtime-constraints listed above.
-5 The snwprintf_s function, unlike swprintf_s, will truncate the result to fit within
- the array pointed to by s.
-<b> Returns</b>
-6 The snwprintf_s function returns the number of wide characters that would have
- been written had n been sufficiently large, not counting the terminating wide null
- character, or a negative value if a runtime-constraint violation occurred. Thus, the null-
- terminated output has been completely written if and only if the returned value is
- nonnegative and less than n.
-<a name="K.3.9.1.4" href="#K.3.9.1.4"><b> K.3.9.1.4 The swprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- int swprintf_s(wchar_t * restrict s, rsize_t n,
- const wchar_t * restrict format, ...);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. n shall neither equal zero nor be greater
- than RSIZE_MAX. The number of wide characters (including the trailing null) required
- for the result to be written to the array pointed to by s shall not be greater than n. The %n
- specifier419) (modified or not by flags, field width, or precision) shall not appear in the
- wide string pointed to by format. Any argument to swprintf_s corresponding to a
- %s specifier shall not be a null pointer. No encoding error shall occur.
-
-
- 418) It is not a runtime-constraint violation for the wide characters %n to appear in sequence in the wide
- string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
- example, if the entire format string was L"%%n".
- 419) It is not a runtime-constraint violation for the wide characters %n to appear in sequence in the wide
- string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
- example, if the entire format string was L"%%n".
-
-[<a name="p626" href="#p626">page 626</a>] (<a href="#Contents">Contents</a>)
-
-3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
- than zero and less than RSIZE_MAX, then the swprintf_s function sets s[0] to the
- null wide character.
-<b> Description</b>
-4 The swprintf_s function is equivalent to the swprintf function except for the
- explicit runtime-constraints listed above.
-5 The swprintf_s function, unlike snwprintf_s, treats a result too big for the array
- pointed to by s as a runtime-constraint violation.
-<b> Returns</b>
-6 If no runtime-constraint violation occurred, the swprintf_s function returns the
- number of wide characters written in the array, not counting the terminating null wide
- character. If an encoding error occurred or if n or more wide characters are requested to
- be written, swprintf_s returns a negative value. If any other runtime-constraint
- violation occurred, swprintf_s returns zero.
-<a name="K.3.9.1.5" href="#K.3.9.1.5"><b> K.3.9.1.5 The swscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- int swscanf_s(const wchar_t * restrict s,
- const wchar_t * restrict format, ...);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. Any argument indirected though in order
- to store converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the swscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent swscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The swscanf_s function is equivalent to fwscanf_s, except that the argument s
- specifies a wide string from which the input is to be obtained, rather than from a stream.
- Reaching the end of the wide string is equivalent to encountering end-of-file for the
- fwscanf_s function.
-<b> Returns</b>
-5 The swscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- swscanf_s function returns the number of input items assigned, which can be fewer
- than provided for, or even zero, in the event of an early matching failure.
-[<a name="p627" href="#p627">page 627</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.9.1.6" href="#K.3.9.1.6"><b> K.3.9.1.6 The vfwprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.21"><stdio.h></a>
- #include <a href="#7.28"><wchar.h></a>
- int vfwprintf_s(FILE * restrict stream,
- const wchar_t * restrict format,
- va_list arg);
- Runtime-constraints
-2 Neither stream nor format shall be a null pointer. The %n specifier420) (modified or
- not by flags, field width, or precision) shall not appear in the wide string pointed to by
- format. Any argument to vfwprintf_s corresponding to a %s specifier shall not be
- a null pointer.
-3 If there is a runtime-constraint violation, the vfwprintf_s function does not attempt
- to produce further output, and it is unspecified to what extent vfwprintf_s produced
- output before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The vfwprintf_s function is equivalent to the vfwprintf function except for the
- explicit runtime-constraints listed above.
-<b> Returns</b>
-5 The vfwprintf_s function returns the number of wide characters transmitted, or a
- negative value if an output error, encoding error, or runtime-constraint violation occurred.
-<a name="K.3.9.1.7" href="#K.3.9.1.7"><b> K.3.9.1.7 The vfwscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.21"><stdio.h></a>
- #include <a href="#7.28"><wchar.h></a>
- int vfwscanf_s(FILE * restrict stream,
- const wchar_t * restrict format, va_list arg);
-
-
-
- 420) It is not a runtime-constraint violation for the wide characters %n to appear in sequence in the wide
- string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
- example, if the entire format string was L"%%n".
-
-[<a name="p628" href="#p628">page 628</a>] (<a href="#Contents">Contents</a>)
-
- Runtime-constraints
-2 Neither stream nor format shall be a null pointer. Any argument indirected though in
- order to store converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the vfwscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent vfwscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The vfwscanf_s function is equivalent to fwscanf_s, with the variable argument
- list replaced by arg, which shall have been initialized by the va_start macro (and
- possibly subsequent va_arg calls). The vfwscanf_s function does not invoke the
- va_end macro.421)
-<b> Returns</b>
-5 The vfwscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- vfwscanf_s function returns the number of input items assigned, which can be fewer
- than provided for, or even zero, in the event of an early matching failure.
-<a name="K.3.9.1.8" href="#K.3.9.1.8"><b> K.3.9.1.8 The vsnwprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.28"><wchar.h></a>
- int vsnwprintf_s(wchar_t * restrict s,
- rsize_t n,
- const wchar_t * restrict format,
- va_list arg);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. n shall neither equal zero nor be greater
- than RSIZE_MAX. The %n specifier422) (modified or not by flags, field width, or
- precision) shall not appear in the wide string pointed to by format. Any argument to
- vsnwprintf_s corresponding to a %s specifier shall not be a null pointer. No
- encoding error shall occur.
-
- 421) As the functions vfwscanf_s, vwscanf_s, and vswscanf_s invoke the va_arg macro, the
- value of arg after the return is indeterminate.
- 422) It is not a runtime-constraint violation for the wide characters %n to appear in sequence in the wide
- string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
- example, if the entire format string was L"%%n".
-
-[<a name="p629" href="#p629">page 629</a>] (<a href="#Contents">Contents</a>)
-
-3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
- than zero and less than RSIZE_MAX, then the vsnwprintf_s function sets s[0] to
- the null wide character.
-<b> Description</b>
-4 The vsnwprintf_s function is equivalent to the vswprintf function except for the
- explicit runtime-constraints listed above.
-5 The vsnwprintf_s function, unlike vswprintf_s, will truncate the result to fit
- within the array pointed to by s.
-<b> Returns</b>
-6 The vsnwprintf_s function returns the number of wide characters that would have
- been written had n been sufficiently large, not counting the terminating null character, or
- a negative value if a runtime-constraint violation occurred. Thus, the null-terminated
- output has been completely written if and only if the returned value is nonnegative and
- less than n.
-<a name="K.3.9.1.9" href="#K.3.9.1.9"><b> K.3.9.1.9 The vswprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.28"><wchar.h></a>
- int vswprintf_s(wchar_t * restrict s,
- rsize_t n,
- const wchar_t * restrict format,
- va_list arg);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. n shall neither equal zero nor be greater
- than RSIZE_MAX. The number of wide characters (including the trailing null) required
- for the result to be written to the array pointed to by s shall not be greater than n. The %n
- specifier423) (modified or not by flags, field width, or precision) shall not appear in the
- wide string pointed to by format. Any argument to vswprintf_s corresponding to a
- %s specifier shall not be a null pointer. No encoding error shall occur.
-3 If there is a runtime-constraint violation, then if s is not a null pointer and n is greater
- than zero and less than RSIZE_MAX, then the vswprintf_s function sets s[0] to the
- null wide character.
-
- 423) It is not a runtime-constraint violation for the wide characters %n to appear in sequence in the wide
- string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
- example, if the entire format string was L"%%n".
-
-[<a name="p630" href="#p630">page 630</a>] (<a href="#Contents">Contents</a>)
-
-<b> Description</b>
-4 The vswprintf_s function is equivalent to the vswprintf function except for the
- explicit runtime-constraints listed above.
-5 The vswprintf_s function, unlike vsnwprintf_s, treats a result too big for the
- array pointed to by s as a runtime-constraint violation.
-<b> Returns</b>
-6 If no runtime-constraint violation occurred, the vswprintf_s function returns the
- number of wide characters written in the array, not counting the terminating null wide
- character. If an encoding error occurred or if n or more wide characters are requested to
- be written, vswprintf_s returns a negative value. If any other runtime-constraint
- violation occurred, vswprintf_s returns zero.
-<a name="K.3.9.1.10" href="#K.3.9.1.10"><b> K.3.9.1.10 The vswscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.28"><wchar.h></a>
- int vswscanf_s(const wchar_t * restrict s,
- const wchar_t * restrict format,
- va_list arg);
- Runtime-constraints
-2 Neither s nor format shall be a null pointer. Any argument indirected though in order
- to store converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the vswscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent vswscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The vswscanf_s function is equivalent to swscanf_s, with the variable argument
- list replaced by arg, which shall have been initialized by the va_start macro (and
- possibly subsequent va_arg calls). The vswscanf_s function does not invoke the
- va_end macro.424)
-
-
-
-
- 424) As the functions vfwscanf_s, vwscanf_s, and vswscanf_s invoke the va_arg macro, the
- value of arg after the return is indeterminate.
-
-[<a name="p631" href="#p631">page 631</a>] (<a href="#Contents">Contents</a>)
-
-<b> Returns</b>
-5 The vswscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- vswscanf_s function returns the number of input items assigned, which can be fewer
- than provided for, or even zero, in the event of an early matching failure.
-<a name="K.3.9.1.11" href="#K.3.9.1.11"><b> K.3.9.1.11 The vwprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.28"><wchar.h></a>
- int vwprintf_s(const wchar_t * restrict format,
- va_list arg);
- Runtime-constraints
-2 format shall not be a null pointer. The %n specifier425) (modified or not by flags, field
- width, or precision) shall not appear in the wide string pointed to by format. Any
- argument to vwprintf_s corresponding to a %s specifier shall not be a null pointer.
-3 If there is a runtime-constraint violation, the vwprintf_s function does not attempt to
- produce further output, and it is unspecified to what extent vwprintf_s produced
- output before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The vwprintf_s function is equivalent to the vwprintf function except for the
- explicit runtime-constraints listed above.
-<b> Returns</b>
-5 The vwprintf_s function returns the number of wide characters transmitted, or a
- negative value if an output error, encoding error, or runtime-constraint violation occurred.
-
-
-
-
- 425) It is not a runtime-constraint violation for the wide characters %n to appear in sequence in the wide
- string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
- example, if the entire format string was L"%%n".
-
-[<a name="p632" href="#p632">page 632</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.9.1.12" href="#K.3.9.1.12"><b> K.3.9.1.12 The vwscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.16"><stdarg.h></a>
- #include <a href="#7.28"><wchar.h></a>
- int vwscanf_s(const wchar_t * restrict format,
- va_list arg);
- Runtime-constraints
-2 format shall not be a null pointer. Any argument indirected though in order to store
- converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the vwscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent vwscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The vwscanf_s function is equivalent to wscanf_s, with the variable argument list
- replaced by arg, which shall have been initialized by the va_start macro (and
- possibly subsequent va_arg calls). The vwscanf_s function does not invoke the
- va_end macro.426)
-<b> Returns</b>
-5 The vwscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- vwscanf_s function returns the number of input items assigned, which can be fewer
- than provided for, or even zero, in the event of an early matching failure.
-<a name="K.3.9.1.13" href="#K.3.9.1.13"><b> K.3.9.1.13 The wprintf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- int wprintf_s(const wchar_t * restrict format, ...);
- Runtime-constraints
-2 format shall not be a null pointer. The %n specifier427) (modified or not by flags, field
-
- 426) As the functions vfwscanf_s, vwscanf_s, and vswscanf_s invoke the va_arg macro, the
- value of arg after the return is indeterminate.
- 427) It is not a runtime-constraint violation for the wide characters %n to appear in sequence in the wide
- string pointed at by format when those wide characters are not a interpreted as a %n specifier. For
- example, if the entire format string was L"%%n".
-
-[<a name="p633" href="#p633">page 633</a>] (<a href="#Contents">Contents</a>)
-
- width, or precision) shall not appear in the wide string pointed to by format. Any
- argument to wprintf_s corresponding to a %s specifier shall not be a null pointer.
-3 If there is a runtime-constraint violation, the wprintf_s function does not attempt to
- produce further output, and it is unspecified to what extent wprintf_s produced output
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The wprintf_s function is equivalent to the wprintf function except for the explicit
- runtime-constraints listed above.
-<b> Returns</b>
-5 The wprintf_s function returns the number of wide characters transmitted, or a
- negative value if an output error, encoding error, or runtime-constraint violation occurred.
-<a name="K.3.9.1.14" href="#K.3.9.1.14"><b> K.3.9.1.14 The wscanf_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- int wscanf_s(const wchar_t * restrict format, ...);
- Runtime-constraints
-2 format shall not be a null pointer. Any argument indirected though in order to store
- converted input shall not be a null pointer.
-3 If there is a runtime-constraint violation, the wscanf_s function does not attempt to
- perform further input, and it is unspecified to what extent wscanf_s performed input
- before discovering the runtime-constraint violation.
-<b> Description</b>
-4 The wscanf_s function is equivalent to fwscanf_s with the argument stdin
- interposed before the arguments to wscanf_s.
-<b> Returns</b>
-5 The wscanf_s function returns the value of the macro EOF if an input failure occurs
- before any conversion or if there is a runtime-constraint violation. Otherwise, the
- wscanf_s function returns the number of input items assigned, which can be fewer than
- provided for, or even zero, in the event of an early matching failure.
-
-
-
-
-[<a name="p634" href="#p634">page 634</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.9.2" href="#K.3.9.2"><b> K.3.9.2 General wide string utilities</b></a>
-<a name="K.3.9.2.1" href="#K.3.9.2.1"><b> K.3.9.2.1 Wide string copying functions</b></a>
-<a name="K.3.9.2.1.1" href="#K.3.9.2.1.1"><b> K.3.9.2.1.1 The wcscpy_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- errno_t wcscpy_s(wchar_t * restrict s1,
- rsize_t s1max,
- const wchar_t * restrict s2);
- Runtime-constraints
-2 Neither s1 nor s2 shall be a null pointer. s1max shall not be greater than RSIZE_MAX.
- s1max shall not equal zero. s1max shall be greater than wcsnlen_s(s2, s1max).
- Copying shall not take place between objects that overlap.
-3 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
- greater than zero and not greater than RSIZE_MAX, then wcscpy_s sets s1[0] to the
- null wide character.
-<b> Description</b>
-4 The wcscpy_s function copies the wide string pointed to by s2 (including the
- terminating null wide character) into the array pointed to by s1.
-5 All elements following the terminating null wide character (if any) written by
- wcscpy_s in the array of s1max wide characters pointed to by s1 take unspecified
- values when wcscpy_s returns.428)
-<b> Returns</b>
-6 The wcscpy_s function returns zero429) if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-
-
-
-
- 428) This allows an implementation to copy wide characters from s2 to s1 while simultaneously checking
- if any of those wide characters are null. Such an approach might write a wide character to every
- element of s1 before discovering that the first element should be set to the null wide character.
- 429) A zero return value implies that all of the requested wide characters from the string pointed to by s2
- fit within the array pointed to by s1 and that the result in s1 is null terminated.
-
-[<a name="p635" href="#p635">page 635</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.9.2.1.2" href="#K.3.9.2.1.2"><b> K.3.9.2.1.2 The wcsncpy_s function</b></a>
-<b> Synopsis</b>
-7 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- errno_t wcsncpy_s(wchar_t * restrict s1,
- rsize_t s1max,
- const wchar_t * restrict s2,
- rsize_t n);
- Runtime-constraints
-8 Neither s1 nor s2 shall be a null pointer. Neither s1max nor n shall be greater than
- RSIZE_MAX. s1max shall not equal zero. If n is not less than s1max, then s1max
- shall be greater than wcsnlen_s(s2, s1max). Copying shall not take place between
- objects that overlap.
-9 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
- greater than zero and not greater than RSIZE_MAX, then wcsncpy_s sets s1[0] to the
- null wide character.
-<b> Description</b>
-10 The wcsncpy_s function copies not more than n successive wide characters (wide
- characters that follow a null wide character are not copied) from the array pointed to by
- s2 to the array pointed to by s1. If no null wide character was copied from s2, then
- s1[n] is set to a null wide character.
-11 All elements following the terminating null wide character (if any) written by
- wcsncpy_s in the array of s1max wide characters pointed to by s1 take unspecified
- values when wcsncpy_s returns.430)
-<b> Returns</b>
-12 The wcsncpy_s function returns zero431) if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-13 EXAMPLE 1 The wcsncpy_s function can be used to copy a wide string without the danger that the
- result will not be null terminated or that wide characters will be written past the end of the destination
- array.
-
-
-
-
- 430) This allows an implementation to copy wide characters from s2 to s1 while simultaneously checking
- if any of those wide characters are null. Such an approach might write a wide character to every
- element of s1 before discovering that the first element should be set to the null wide character.
- 431) A zero return value implies that all of the requested wide characters from the string pointed to by s2
- fit within the array pointed to by s1 and that the result in s1 is null terminated.
-
-[<a name="p636" href="#p636">page 636</a>] (<a href="#Contents">Contents</a>)
-
- #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- /* ... */
- wchar_t src1[100] = L"hello";
- wchar_t src2[7] = {L'g', L'o', L'o', L'd', L'b', L'y', L'e'};
- wchar_t dst1[6], dst2[5], dst3[5];
- int r1, r2, r3;
- r1 = wcsncpy_s(dst1, 6, src1, 100);
- r2 = wcsncpy_s(dst2, 5, src2, 7);
- r3 = wcsncpy_s(dst3, 5, src2, 4);
- The first call will assign to r1 the value zero and to dst1 the sequence of wide characters hello\0.
- The second call will assign to r2 a nonzero value and to dst2 the sequence of wide characters \0.
- The third call will assign to r3 the value zero and to dst3 the sequence of wide characters good\0.
-
-<a name="K.3.9.2.1.3" href="#K.3.9.2.1.3"><b> K.3.9.2.1.3 The wmemcpy_s function</b></a>
-<b> Synopsis</b>
-14 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- errno_t wmemcpy_s(wchar_t * restrict s1,
- rsize_t s1max,
- const wchar_t * restrict s2,
- rsize_t n);
- Runtime-constraints
-15 Neither s1 nor s2 shall be a null pointer. Neither s1max nor n shall be greater than
- RSIZE_MAX. n shall not be greater than s1max. Copying shall not take place between
- objects that overlap.
-16 If there is a runtime-constraint violation, the wmemcpy_s function stores zeros in the
- first s1max wide characters of the object pointed to by s1 if s1 is not a null pointer and
- s1max is not greater than RSIZE_MAX.
-<b> Description</b>
-17 The wmemcpy_s function copies n successive wide characters from the object pointed
- to by s2 into the object pointed to by s1.
-<b> Returns</b>
-18 The wmemcpy_s function returns zero if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-
-
-
-
-[<a name="p637" href="#p637">page 637</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.9.2.1.4" href="#K.3.9.2.1.4"><b> K.3.9.2.1.4 The wmemmove_s function</b></a>
-<b> Synopsis</b>
-19 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- errno_t wmemmove_s(wchar_t *s1, rsize_t s1max,
- const wchar_t *s2, rsize_t n);
- Runtime-constraints
-20 Neither s1 nor s2 shall be a null pointer. Neither s1max nor n shall be greater than
- RSIZE_MAX. n shall not be greater than s1max.
-21 If there is a runtime-constraint violation, the wmemmove_s function stores zeros in the
- first s1max wide characters of the object pointed to by s1 if s1 is not a null pointer and
- s1max is not greater than RSIZE_MAX.
-<b> Description</b>
-22 The wmemmove_s function copies n successive wide characters from the object pointed
- to by s2 into the object pointed to by s1. This copying takes place as if the n wide
- characters from the object pointed to by s2 are first copied into a temporary array of n
- wide characters that does not overlap the objects pointed to by s1 or s2, and then the n
- wide characters from the temporary array are copied into the object pointed to by s1.
-<b> Returns</b>
-23 The wmemmove_s function returns zero if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-<a name="K.3.9.2.2" href="#K.3.9.2.2"><b> K.3.9.2.2 Wide string concatenation functions</b></a>
-<a name="K.3.9.2.2.1" href="#K.3.9.2.2.1"><b> K.3.9.2.2.1 The wcscat_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- errno_t wcscat_s(wchar_t * restrict s1,
- rsize_t s1max,
- const wchar_t * restrict s2);
- Runtime-constraints
-2 Let m denote the value s1max - wcsnlen_s(s1, s1max) upon entry to
- wcscat_s.
-3 Neither s1 nor s2 shall be a null pointer. s1max shall not be greater than RSIZE_MAX.
- s1max shall not equal zero. m shall not equal zero.432) m shall be greater than
- wcsnlen_s(s2, m). Copying shall not take place between objects that overlap.
-
-[<a name="p638" href="#p638">page 638</a>] (<a href="#Contents">Contents</a>)
-
-4 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
- greater than zero and not greater than RSIZE_MAX, then wcscat_s sets s1[0] to the
- null wide character.
-<b> Description</b>
-5 The wcscat_s 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. The
- initial wide character from s2 overwrites the null wide character at the end of s1.
-6 All elements following the terminating null wide character (if any) written by
- wcscat_s in the array of s1max wide characters pointed to by s1 take unspecified
- values when wcscat_s returns.433)
-<b> Returns</b>
-7 The wcscat_s function returns zero434) if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-<a name="K.3.9.2.2.2" href="#K.3.9.2.2.2"><b> K.3.9.2.2.2 The wcsncat_s function</b></a>
-<b> Synopsis</b>
-8 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- errno_t wcsncat_s(wchar_t * restrict s1,
- rsize_t s1max,
- const wchar_t * restrict s2,
- rsize_t n);
- Runtime-constraints
-9 Let m denote the value s1max - wcsnlen_s(s1, s1max) upon entry to
- wcsncat_s.
-10 Neither s1 nor s2 shall be a null pointer. Neither s1max nor n shall be greater than
- RSIZE_MAX. s1max shall not equal zero. m shall not equal zero.435) If n is not less
- than m, then m shall be greater than wcsnlen_s(s2, m). Copying shall not take
- place between objects that overlap.
-
-
- 432) Zero means that s1 was not null terminated upon entry to wcscat_s.
- 433) This allows an implementation to append wide characters from s2 to s1 while simultaneously
- checking if any of those wide characters are null. Such an approach might write a wide character to
- every element of s1 before discovering that the first element should be set to the null wide character.
- 434) A zero return value implies that all of the requested wide characters from the wide string pointed to by
- s2 were appended to the wide string pointed to by s1 and that the result in s1 is null terminated.
- 435) Zero means that s1 was not null terminated upon entry to wcsncat_s.
-
-[<a name="p639" href="#p639">page 639</a>] (<a href="#Contents">Contents</a>)
-
-11 If there is a runtime-constraint violation, then if s1 is not a null pointer and s1max is
- greater than zero and not greater than RSIZE_MAX, then wcsncat_s sets s1[0] to the
- null wide character.
-<b> Description</b>
-12 The wcsncat_s function appends not more than n successive wide characters (wide
- characters that follow a null wide character are not copied) from the array pointed to by
- s2 to the end of the wide string pointed to by s1. The initial wide character from s2
- overwrites the null wide character at the end of s1. If no null wide character was copied
- from s2, then s1[s1max-m+n] is set to a null wide character.
-13 All elements following the terminating null wide character (if any) written by
- wcsncat_s in the array of s1max wide characters pointed to by s1 take unspecified
- values when wcsncat_s returns.436)
-<b> Returns</b>
-14 The wcsncat_s function returns zero437) if there was no runtime-constraint violation.
- Otherwise, a nonzero value is returned.
-15 EXAMPLE 1 The wcsncat_s function can be used to copy a wide string without the danger that the
- result will not be null terminated or that wide characters will be written past the end of the destination
- array.
- #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- /* ... */
- wchar_t s1[100] = L"good";
- wchar_t s2[6] = L"hello";
- wchar_t s3[6] = L"hello";
- wchar_t s4[7] = L"abc";
- wchar_t s5[1000] = L"bye";
- int r1, r2, r3, r4;
- r1 = wcsncat_s(s1, 100, s5, 1000);
- r2 = wcsncat_s(s2, 6, L"", 1);
- r3 = wcsncat_s(s3, 6, L"X", 2);
- r4 = wcsncat_s(s4, 7, L"defghijklmn", 3);
- After the first call r1 will have the value zero and s1 will be the wide character sequence goodbye\0.
- After the second call r2 will have the value zero and s2 will be the wide character sequence hello\0.
- After the third call r3 will have a nonzero value and s3 will be the wide character sequence \0.
- After the fourth call r4 will have the value zero and s4 will be the wide character sequence abcdef\0.
-
-
-
-
- 436) This allows an implementation to append wide characters from s2 to s1 while simultaneously
- checking if any of those wide characters are null. Such an approach might write a wide character to
- every element of s1 before discovering that the first element should be set to the null wide character.
- 437) A zero return value implies that all of the requested wide characters from the wide string pointed to by
- s2 were appended to the wide string pointed to by s1 and that the result in s1 is null terminated.
-
-[<a name="p640" href="#p640">page 640</a>] (<a href="#Contents">Contents</a>)
-
-<a name="K.3.9.2.3" href="#K.3.9.2.3"><b> K.3.9.2.3 Wide string search functions</b></a>
-<a name="K.3.9.2.3.1" href="#K.3.9.2.3.1"><b> K.3.9.2.3.1 The wcstok_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- wchar_t *wcstok_s(wchar_t * restrict s1,
- rsize_t * restrict s1max,
- const wchar_t * restrict s2,
- wchar_t ** restrict ptr);
- Runtime-constraints
-2 None of s1max, s2, or ptr shall be a null pointer. If s1 is a null pointer, then *ptr
- shall not be a null pointer. The value of *s1max shall not be greater than RSIZE_MAX.
- The end of the token found shall occur within the first *s1max wide characters of s1 for
- the first call, and shall occur within the first *s1max wide characters of where searching
- resumes on subsequent calls.
-3 If there is a runtime-constraint violation, the wcstok_s function does not indirect
- through the s1 or s2 pointers, and does not store a value in the object pointed to by ptr.
-<b> Description</b>
-4 A sequence of calls to the wcstok_s 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. The fourth argument points to a caller-provided wchar_t
- pointer into which the wcstok_s function stores information necessary for it to
- continue scanning the same wide string.
-5 The first call in a sequence has a non-null first argument and s1max points to an object
- whose value is the number of elements in the wide character array pointed to by the first
- argument. The first call stores an initial value in the object pointed to by ptr and
- updates the value pointed to by s1max to reflect the number of elements that remain in
- relation to ptr. Subsequent calls in the sequence have a null first argument and the
- objects pointed to by s1max and ptr are required to have the values stored by the
- previous call in the sequence, which are then updated. The separator wide string pointed
- to by s2 may be different from call to call.
-6 The first call in the sequence searches the wide string pointed to by s1 for the first wide
- character that is not contained in the current separator wide string pointed to by s2. If no
- such wide character is found, then there are no tokens in the wide string pointed to by s1
- and the wcstok_s function returns a null pointer. If such a wide character is found, it is
- the start of the first token.
-
-
-[<a name="p641" href="#p641">page 641</a>] (<a href="#Contents">Contents</a>)
-
-7 The wcstok_s function then searches from there for the first wide character in s1 that
- is contained in the current separator wide string. If no such wide character is found, the
- current token extends to the end of the wide string pointed to by s1, and subsequent
- searches in the same wide string for a token return a null pointer. If such a wide character
- is found, it is overwritten by a null wide character, which terminates the current token.
-8 In all cases, the wcstok_s function stores sufficient information in the pointer pointed
- to by ptr so that subsequent calls, with a null pointer for s1 and the unmodified pointer
- value for ptr, shall start searching just past the element overwritten by a null wide
- character (if any).
-<b> Returns</b>
-9 The wcstok_s function returns a pointer to the first wide character of a token, or a null
- pointer if there is no token or there is a runtime-constraint violation.
-10 EXAMPLE
- #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- static wchar_t str1[] = L"?a???b,,,#c";
- static wchar_t str2[] = L"\t \t";
- wchar_t *t, *ptr1, *ptr2;
- rsize_t max1 = wcslen(str1)+1;
- rsize_t max2 = wcslen(str2)+1;
- t = wcstok_s(str1, &max1, "?", &ptr1); // t points to the token "a"
- t = wcstok_s(NULL, &max1, ",", &ptr1); // t points to the token "??b"
- t = wcstok_s(str2, &max2, " \t", &ptr2); // t is a null pointer
- t = wcstok_s(NULL, &max1, "#,", &ptr1); // t points to the token "c"
- t = wcstok_s(NULL, &max1, "?", &ptr1); // t is a null pointer
-
-<a name="K.3.9.2.4" href="#K.3.9.2.4"><b> K.3.9.2.4 Miscellaneous functions</b></a>
-<a name="K.3.9.2.4.1" href="#K.3.9.2.4.1"><b> K.3.9.2.4.1 The wcsnlen_s function</b></a>
-<b> Synopsis</b>
-1 #define __STDC_WANT_LIB_EXT1__ 1
- #include <a href="#7.28"><wchar.h></a>
- size_t wcsnlen_s(const wchar_t *s, size_t maxsize);
-<b> Description</b>
-2 The wcsnlen_s function computes the length of the wide string pointed to by s.
-<b> Returns</b>
-3 If s is a null pointer,438) then the wcsnlen_s function returns zero.
-4 Otherwise, the wcsnlen_s function returns the number of wide characters that precede
- the terminating null wide character. If there is no null wide character in the first
- maxsize wide characters of s then wcsnlen_s returns maxsize. At most the first
-
-[<a name="p642" href="#p642">page 642</a>] (<a href="#Contents">Contents</a>)
-
- maxsize wide characters of s shall be accessed by wcsnlen_s.
-<a name="K.3.9.3" href="#K.3.9.3"><b> K.3.9.3 Extended multibyte/wide character conversion utilities</b></a>
-<a name="K.3.9.3.1" href="#K.3.9.3.1"><b> K.3.9.3.1 Restartable multibyte/wide character conversion functions</b></a>
-1 Unlike wcrtomb, wcrtomb_s does not permit the ps parameter (the pointer to the
- conversion state) to be a null pointer.
-<a name="K.3.9.3.1.1" href="#K.3.9.3.1.1"><b> K.3.9.3.1.1 The wcrtomb_s function</b></a>
-<b> Synopsis</b>
-2 #include <a href="#7.28"><wchar.h></a>
- errno_t wcrtomb_s(size_t * restrict retval,
- char * restrict s, rsize_t smax,
- wchar_t wc, mbstate_t * restrict ps);
- Runtime-constraints
-3 Neither retval nor ps shall be a null pointer. If s is not a null pointer, then smax
- shall not equal zero and shall not be greater than RSIZE_MAX. If s is not a null pointer,
- then smax shall be not be less than the number of bytes to be stored in the array pointed
- to by s. If s is a null pointer, then smax shall equal zero.
-4 If there is a runtime-constraint violation, then wcrtomb_s does the following. If s is
- not a null pointer and smax is greater than zero and not greater than RSIZE_MAX, then
- wcrtomb_s sets s[0] to the null character. If retval is not a null pointer, then
- wcrtomb_s sets *retval to (size_t)(-1).
-<b> Description</b>
-5 If s is a null pointer, the wcrtomb_s function is equivalent to the call
- wcrtomb_s(&retval, buf, sizeof buf, L'\0', ps)
- where retval and buf are internal variables of the appropriate types, and the size of
- buf is greater than MB_CUR_MAX.
-6 If s is not a null pointer, the wcrtomb_s function determines the number of bytes
- needed to represent the multibyte character that corresponds to the wide character given
- by wc (including any shift sequences), and stores the multibyte character representation
- in the array whose first element is pointed to by s. At most MB_CUR_MAX bytes are
- stored. If wc is a null wide character, a null byte is stored, preceded by any shift
- sequence needed to restore the initial shift state; the resulting state described is the initial
- conversion state.
-
- 438) Note that the wcsnlen_s function has no runtime-constraints. This lack of runtime-constraints
- along with the values returned for a null pointer or an unterminated wide string argument make
- wcsnlen_s useful in algorithms that gracefully handle such exceptional data.
-
-[<a name="p643" href="#p643">page 643</a>] (<a href="#Contents">Contents</a>)
-
-7 If wc does not correspond to a valid multibyte character, an encoding error occurs: the
- wcrtomb_s function stores the value (size_t)(-1) into *retval and the
- conversion state is unspecified. Otherwise, the wcrtomb_s function stores into
- *retval the number of bytes (including any shift sequences) stored in the array pointed
- to by s.
-<b> Returns</b>
-8 The wcrtomb_s function returns zero if no runtime-constraint violation and no
- encoding error occurred. Otherwise, a nonzero value is returned.
-<a name="K.3.9.3.2" href="#K.3.9.3.2"><b> K.3.9.3.2 Restartable multibyte/wide string conversion functions</b></a>
-1 Unlike mbsrtowcs and wcsrtombs, mbsrtowcs_s and wcsrtombs_s do not
- permit the ps parameter (the pointer to the conversion state) to be a null pointer.
-<a name="K.3.9.3.2.1" href="#K.3.9.3.2.1"><b> K.3.9.3.2.1 The mbsrtowcs_s function</b></a>
-<b> Synopsis</b>
-2 #include <a href="#7.28"><wchar.h></a>
- errno_t mbsrtowcs_s(size_t * restrict retval,
- wchar_t * restrict dst, rsize_t dstmax,
- const char ** restrict src, rsize_t len,
- mbstate_t * restrict ps);
- Runtime-constraints
-3 None of retval, src, *src, or ps shall be null pointers. If dst is not a null pointer,
- then neither len nor dstmax shall be greater than RSIZE_MAX. If dst is a null
- pointer, then dstmax shall equal zero. If dst is not a null pointer, then dstmax shall
- not equal zero. If dst is not a null pointer and len is not less than dstmax, then a null
- character shall occur within the first dstmax multibyte characters of the array pointed to
- by *src.
-4 If there is a runtime-constraint violation, then mbsrtowcs_s does the following. If
- retval is not a null pointer, then mbsrtowcs_s sets *retval to (size_t)(-1).
- If dst is not a null pointer and dstmax is greater than zero and less than RSIZE_MAX,
- then mbsrtowcs_s sets dst[0] to the null wide character.
-<b> Description</b>
-5 The mbsrtowcs_s 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. If dst is not a null
- pointer, the converted characters are stored into the array pointed to by dst. Conversion
- continues up to and including a terminating null character, which is also stored.
- Conversion stops earlier in two cases: when a sequence of bytes is encountered that does
- not form a valid multibyte character, or (if dst is not a null pointer) when len wide
-[<a name="p644" href="#p644">page 644</a>] (<a href="#Contents">Contents</a>)
-
- characters have been stored into the array pointed to by dst.439) If dst is not a null
- pointer and no null wide character was stored into the array pointed to by dst, then
- dst[len] is set to the null wide character. Each conversion takes place as if by a call
- to the mbrtowc function.
-6 If dst is not a null pointer, the pointer object pointed to by src is assigned either a null
- pointer (if conversion stopped due to reaching a terminating null character) or the address
- just past the last multibyte character converted (if any). If conversion stopped due to
- reaching a terminating null character and if dst is not a null pointer, the resulting state
- described is the initial conversion state.
-7 Regardless of whether dst is or is not a null pointer, if the input conversion encounters a
- sequence of bytes that do not form a valid multibyte character, an encoding error occurs:
- the mbsrtowcs_s function stores the value (size_t)(-1) into *retval and the
- conversion state is unspecified. Otherwise, the mbsrtowcs_s function stores into
- *retval the number of multibyte characters successfully converted, not including the
- terminating null character (if any).
-8 All elements following the terminating null wide character (if any) written by
- mbsrtowcs_s in the array of dstmax wide characters pointed to by dst take
- unspecified values when mbsrtowcs_s returns.440)
-9 If copying takes place between objects that overlap, the objects take on unspecified
- values.
-<b> Returns</b>
-10 The mbsrtowcs_s function returns zero if no runtime-constraint violation and no
- encoding error occurred. Otherwise, a nonzero value is returned.
-<a name="K.3.9.3.2.2" href="#K.3.9.3.2.2"><b> K.3.9.3.2.2 The wcsrtombs_s function</b></a>
-<b> Synopsis</b>
-11 #include <a href="#7.28"><wchar.h></a>
- errno_t wcsrtombs_s(size_t * restrict retval,
- char * restrict dst, rsize_t dstmax,
- const wchar_t ** restrict src, rsize_t len,
- mbstate_t * restrict ps);
-
-
-
-
- 439) Thus, the value of len is ignored if dst is a null pointer.
- 440) This allows an implementation to attempt converting the multibyte string before discovering a
- terminating null character did not occur where required.
-
-[<a name="p645" href="#p645">page 645</a>] (<a href="#Contents">Contents</a>)
-
- Runtime-constraints
-12 None of retval, src, *src, or ps shall be null pointers. If dst is not a null pointer,
- then neither len nor dstmax shall be greater than RSIZE_MAX. If dst is a null
- pointer, then dstmax shall equal zero. If dst is not a null pointer, then dstmax shall
- not equal zero. If dst is not a null pointer and len is not less than dstmax, then the
- conversion shall have been stopped (see below) because a terminating null wide character
- was reached or because an encoding error occurred.
-13 If there is a runtime-constraint violation, then wcsrtombs_s does the following. If
- retval is not a null pointer, then wcsrtombs_s sets *retval to (size_t)(-1).
- If dst is not a null pointer and dstmax is greater than zero and less than RSIZE_MAX,
- then wcsrtombs_s sets dst[0] to the null character.
-<b> Description</b>
-14 The wcsrtombs_s 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. If dst is not a
- null pointer, the converted characters are then stored into the array pointed to by dst.
- Conversion continues up to and including a terminating null wide character, which is also
- stored. Conversion stops earlier in two cases:
- -- when a wide character is reached that does not correspond to a valid multibyte
- character;
- -- (if dst is not a null pointer) when the next multibyte character would exceed the
- limit of n total bytes to be stored into the array pointed to by dst. If the wide
- character being converted is the null wide character, then n is the lesser of len or
- dstmax. Otherwise, n is the lesser of len or dstmax-1.
- If the conversion stops without converting a null wide character and dst is not a null
- pointer, then a null character is stored into the array pointed to by dst immediately
- following any multibyte characters already stored. Each conversion takes place as if by a
- call to the wcrtomb function.441)
-15 If dst is not a null pointer, the pointer object pointed to by src is assigned either a null
- pointer (if conversion stopped due to reaching a terminating null wide character) or the
- address just past the last wide character converted (if any). If conversion stopped due to
- reaching a terminating null wide character, the resulting state described is the initial
- conversion state.
-
-
- 441) If conversion stops because a terminating null wide character has been reached, the bytes stored
- include those necessary to reach the initial shift state immediately before the null byte. However, if
- the conversion stops before a terminating null wide character has been reached, the result will be null
- terminated, but might not end in the initial shift state.
-
-[<a name="p646" href="#p646">page 646</a>] (<a href="#Contents">Contents</a>)
-
-16 Regardless of whether dst is or is not a null pointer, if the input conversion encounters a
- wide character that does not correspond to a valid multibyte character, an encoding error
- occurs: the wcsrtombs_s function stores the value (size_t)(-1) into *retval
- and the conversion state is unspecified. Otherwise, the wcsrtombs_s function stores
- into *retval the number of bytes in the resulting multibyte character sequence, not
- including the terminating null character (if any).
-17 All elements following the terminating null character (if any) written by wcsrtombs_s
- in the array of dstmax elements pointed to by dst take unspecified values when
- wcsrtombs_s returns.442)
-18 If copying takes place between objects that overlap, the objects take on unspecified
- values.
-<b> Returns</b>
-19 The wcsrtombs_s function returns zero if no runtime-constraint violation and no
- encoding error occurred. Otherwise, a nonzero value is returned.
-
-
-
-
- 442) When len is not less than dstmax, the implementation might fill the array before discovering a
- runtime-constraint violation.
-
-[<a name="p647" href="#p647">page 647</a>] (<a href="#Contents">Contents</a>)
-
-<a name="L" href="#L"><b> Annex L</b></a>
- (normative)
- Analyzability
-<a name="L.1" href="#L.1"><b> L.1 Scope</b></a>
-1 This annex specifies optional behavior that can aid in the analyzability of C programs.
-2 An implementation that defines __STDC_ANALYZABLE__ shall conform to the
- specifications in this annex.443)
-<a name="L.2" href="#L.2"><b> L.2 Definitions</b></a>
-<a name="L.2.1" href="#L.2.1"><b> L.2.1</b></a>
-1 out-of-bounds store
- an (attempted) access (<a href="#3.1">3.1</a>) that, at run time, for a given computational state, would
- modify (or, for an object declared volatile, fetch) one or more bytes that lie outside
- the bounds permitted by this Standard.
-<a name="L.2.2" href="#L.2.2"><b> L.2.2</b></a>
-1 bounded undefined behavior
- undefined behavior (<a href="#3.4.3">3.4.3</a>) that does not perform an out-of-bounds store.
-2 NOTE 1 The behavior might perform a trap.
-
-3 NOTE 2 Any values produced or stored might be indeterminate values.
-
-<a name="L.2.3" href="#L.2.3"><b> L.2.3</b></a>
-1 critical undefined behavior
- undefined behavior that is not bounded undefined behavior.
-2 NOTE The behavior might perform an out-of-bounds store or perform a trap.
-
-
-
-
- 443) Implementations that do not define __STDC_ANALYZABLE__ are not required to conform to these
- specifications.
-
-[<a name="p648" href="#p648">page 648</a>] (<a href="#Contents">Contents</a>)
-
-<a name="L.3" href="#L.3"><b> L.3 Requirements</b></a>
-1 If the program performs a trap (<a href="#3.19.5">3.19.5</a>), the implementation is permitted to invoke a
- runtime-constraint handler. Any such semantics are implementation-defined.
-2 All undefined behavior shall be limited to bounded undefined behavior, except for the
- following which are permitted to result in critical undefined behavior:
- -- An object is referred to outside of its lifetime (<a href="#6.2.4">6.2.4</a>).
- -- An lvalue does not designate an object when evaluated (<a href="#6.3.2.1">6.3.2.1</a>).
- -- A pointer is used to call a function whose type is not compatible with the referenced
- type (<a href="#6.3.2.3">6.3.2.3</a>).
- -- The operand of the unary * operator has an invalid value (<a href="#6.5.3.2">6.5.3.2</a>).
- -- Addition or subtraction of a pointer into, or just beyond, an array object and an
- integer type produces a result that points just beyond the array object and is used as
- the operand of a unary * operator that is evaluated (<a href="#6.5.6">6.5.6</a>).
- -- An argument to a library function has an invalid value or a type not expected by a
- function with variable number of arguments (<a href="#7.1.4">7.1.4</a>).
- -- The value of a pointer that refers to space deallocated by a call to the free or realloc
- function is used (<a href="#7.22.3">7.22.3</a>).
- -- A string or wide string utility function is instructed to access an array beyond the end
- of an object (<a href="#7.23.1">7.23.1</a>, <a href="#7.28.4">7.28.4</a>).
-
-
-
-
-[<a name="p649" href="#p649">page 649</a>] (<a href="#Contents">Contents</a>)
-
-
-<a name="Bibliography" href="#Bibliography"><b> Bibliography</b></a>
- 1. ''The C Reference Manual'' by Dennis M. Ritchie, a version of which was
- published in The C Programming Language by Brian W. Kernighan and Dennis
- M. Ritchie, Prentice-Hall, Inc., (1978). Copyright owned by AT&T.
- 2. 1984 /usr/group Standard by the /usr/group Standards Committee, Santa Clara,
- California, USA, November 1984.
- 3. ANSI X3/TR-1-82 (1982), American National Dictionary for Information
- Processing Systems, Information Processing Systems Technical Report.
- 4. ANSI/IEEE 754-1985, American National Standard for Binary Floating-Point
- Arithmetic.
- 5. ANSI/IEEE 854-1988, American National Standard for Radix-Independent
- Floating-Point Arithmetic.
- 6. IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems,
- second edition (previously designated IEC 559:1989).
- 7. ISO 31-11:1992, Quantities and units -- Part 11: Mathematical signs and
- symbols for use in the physical sciences and technology.
- 8. ISO/IEC 646:1991, Information technology -- ISO 7-bit coded character set for
- information interchange.
- 9. ISO/IEC 2382-1:1993, Information technology -- Vocabulary -- Part 1:
- Fundamental terms.
- 10. ISO 4217:1995, Codes for the representation of currencies and funds.
- 11. ISO 8601:1988, Data elements and interchange formats -- Information
- interchange -- Representation of dates and times.
- 12. ISO/IEC 9899:1990, Programming languages -- C.
- 13. ISO/IEC 9899/COR1:1994, Technical Corrigendum 1.
- 14. ISO/IEC 9899/COR2:1996, Technical Corrigendum 2.
- 15. ISO/IEC 9899/AMD1:1995, Amendment 1 to ISO/IEC 9899:1990 C Integrity.
- 16. ISO/IEC 9899:1999, Programming languages -- C.
- 17. ISO/IEC 9899:1999/Cor.1:2001, Technical Corrigendum 1.
- 18. ISO/IEC 9899:1999/Cor.2:2004, Technical Corrigendum 2.
- 19. ISO/IEC 9899:1999/Cor.3:2007, Technical Corrigendum 3.
-
-
-
-[<a name="p650" href="#p650">page 650</a>] (<a href="#Contents">Contents</a>)
-
- 20. ISO/IEC 9945-2:1993, Information technology -- Portable Operating System
- Interface (POSIX) -- Part 2: Shell and Utilities.
- 21. ISO/IEC TR 10176:1998, Information technology -- Guidelines for the
- preparation of programming language standards.
- 22. ISO/IEC 10646-1:1993, Information technology -- Universal Multiple-Octet
- Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane.
- 23. ISO/IEC 10646-1/COR1:1996, Technical Corrigendum 1 to
- ISO/IEC 10646-1:1993.
- 24. ISO/IEC 10646-1/COR2:1998, Technical Corrigendum 2 to
- ISO/IEC 10646-1:1993.
- 25. ISO/IEC 10646-1/AMD1:1996, Amendment 1 to ISO/IEC 10646-1:1993
- Transformation Format for 16 planes of group 00 (UTF-16).
- 26. ISO/IEC 10646-1/AMD2:1996, Amendment 2 to ISO/IEC 10646-1:1993 UCS
- Transformation Format 8 (UTF-8).
- 27. ISO/IEC 10646-1/AMD3:1996, Amendment 3 to ISO/IEC 10646-1:1993.
- 28. ISO/IEC 10646-1/AMD4:1996, Amendment 4 to ISO/IEC 10646-1:1993.
- 29. ISO/IEC 10646-1/AMD5:1998, Amendment 5 to ISO/IEC 10646-1:1993 Hangul
- syllables.
- 30. ISO/IEC 10646-1/AMD6:1997, Amendment 6 to ISO/IEC 10646-1:1993
- Tibetan.
- 31. ISO/IEC 10646-1/AMD7:1997, Amendment 7 to ISO/IEC 10646-1:1993 33
- additional characters.
- 32. ISO/IEC 10646-1/AMD8:1997, Amendment 8 to ISO/IEC 10646-1:1993.
- 33. ISO/IEC 10646-1/AMD9:1997, Amendment 9 to ISO/IEC 10646-1:1993
- Identifiers for characters.
- 34. ISO/IEC 10646-1/AMD10:1998, Amendment 10 to ISO/IEC 10646-1:1993
- Ethiopic.
- 35. ISO/IEC 10646-1/AMD11:1998, Amendment 11 to ISO/IEC 10646-1:1993
- Unified Canadian Aboriginal Syllabics.
- 36. ISO/IEC 10646-1/AMD12:1998, Amendment 12 to ISO/IEC 10646-1:1993
- Cherokee.
- 37. ISO/IEC 10967-1:1994, Information technology -- Language independent
- arithmetic -- Part 1: Integer and floating point arithmetic.
-
-
-[<a name="p651" href="#p651">page 651</a>] (<a href="#Contents">Contents</a>)
-
- 38. ISO/IEC TR 19769:2004, Information technology -- Programming languages,
- their environments and system software interfaces -- Extensions for the
- programming language C to support new character data types.
- 39. ISO/IEC TR 24731-1:2007, Information technology -- Programming languages,
- their environments and system software interfaces -- Extensions to the C library
- -- Part 1: Bounds-checking interfaces.
-
-
-
-
-[<a name="p652" href="#p652">page 652</a>] (<a href="#Contents">Contents</a>)
-
-
-<a name="Index" href="#Index"><b>Index</b></a>
-[^ x ^], <a href="#3.20">3.20</a> , (comma operator), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.17">6.5.17</a>
- , (comma punctuator), <a href="#6.5.2">6.5.2</a>, <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.7.2.2">6.7.2.2</a>,
-[_ x _], <a href="#3.21">3.21</a> <a href="#6.7.2.3">6.7.2.3</a>, <a href="#6.7.9">6.7.9</a>
-! (logical negation operator), <a href="#6.5.3.3">6.5.3.3</a> - (subtraction operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a>
-!= (inequality operator), <a href="#6.5.9">6.5.9</a> - (unary minus operator), <a href="#6.5.3.3">6.5.3.3</a>, <a href="#F.3">F.3</a>
-# operator, <a href="#6.10.3.2">6.10.3.2</a> -- (postfix decrement operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a>
-# preprocessing directive, <a href="#6.10.7">6.10.7</a> -- (prefix decrement operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a>
-# punctuator, <a href="#6.10">6.10</a> -= (subtraction assignment operator), <a href="#6.5.16.2">6.5.16.2</a>
-## operator, <a href="#6.10.3.3">6.10.3.3</a> -> (structure/union pointer operator), <a href="#6.5.2.3">6.5.2.3</a>
-#define preprocessing directive, <a href="#6.10.3">6.10.3</a> . (structure/union member operator), <a href="#6.3.2.1">6.3.2.1</a>,
-#elif preprocessing directive, <a href="#6.10.1">6.10.1</a> <a href="#6.5.2.3">6.5.2.3</a>
-#else preprocessing directive, <a href="#6.10.1">6.10.1</a> . punctuator, <a href="#6.7.9">6.7.9</a>
-#endif preprocessing directive, <a href="#6.10.1">6.10.1</a> ... (ellipsis punctuator), <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.10.3">6.10.3</a>
-#error preprocessing directive, <a href="#4">4</a>, <a href="#6.10.5">6.10.5</a> / (division operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#F.3">F.3</a>, <a href="#G.5.1">G.5.1</a>
-#if preprocessing directive, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, /* */ (comment delimiters), <a href="#6.4.9">6.4.9</a>
- <a href="#6.10.1">6.10.1</a>, <a href="#7.1.4">7.1.4</a> // (comment delimiter), <a href="#6.4.9">6.4.9</a>
-#ifdef preprocessing directive, <a href="#6.10.1">6.10.1</a> /= (division assignment operator), <a href="#6.5.16.2">6.5.16.2</a>
-#ifndef preprocessing directive, <a href="#6.10.1">6.10.1</a> : (colon punctuator), <a href="#6.7.2.1">6.7.2.1</a>
-#include preprocessing directive, <a href="#5.1.1.2">5.1.1.2</a>, :> (alternative spelling of ]), <a href="#6.4.6">6.4.6</a>
- <a href="#6.10.2">6.10.2</a> ; (semicolon punctuator), <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.8.3">6.8.3</a>,
-#line preprocessing directive, <a href="#6.10.4">6.10.4</a> <a href="#6.8.5">6.8.5</a>, <a href="#6.8.6">6.8.6</a>
-#pragma preprocessing directive, <a href="#6.10.6">6.10.6</a> < (less-than operator), <a href="#6.5.8">6.5.8</a>
-#undef preprocessing directive, <a href="#6.10.3.5">6.10.3.5</a>, <a href="#7.1.3">7.1.3</a>, <% (alternative spelling of {), <a href="#6.4.6">6.4.6</a>
- <a href="#7.1.4">7.1.4</a> <: (alternative spelling of [), <a href="#6.4.6">6.4.6</a>
-% (remainder operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a> << (left-shift operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
-%: (alternative spelling of #), <a href="#6.4.6">6.4.6</a> <<= (left-shift assignment operator), <a href="#6.5.16.2">6.5.16.2</a>
-%:%: (alternative spelling of ##), <a href="#6.4.6">6.4.6</a> <= (less-than-or-equal-to operator), <a href="#6.5.8">6.5.8</a>
-%= (remainder assignment operator), <a href="#6.5.16.2">6.5.16.2</a> <a href="#7.2"><assert.h></a> header, <a href="#7.2">7.2</a>
-%> (alternative spelling of }), <a href="#6.4.6">6.4.6</a> <a href="#7.3"><complex.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>,
-& (address operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a> <a href="#7.3">7.3</a>, <a href="#7.24">7.24</a>, <a href="#7.30.1">7.30.1</a>, <a href="#G.6">G.6</a>, <a href="#J.5.17">J.5.17</a>
-& (bitwise AND operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.10">6.5.10</a> <a href="#7.4"><ctype.h></a> header, <a href="#7.4">7.4</a>, <a href="#7.30.2">7.30.2</a>
-&& (logical AND operator), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.13">6.5.13</a> <a href="#7.5"><errno.h></a> header, <a href="#7.5">7.5</a>, <a href="#7.30.3">7.30.3</a>, <a href="#K.3.2">K.3.2</a>
-&= (bitwise AND assignment operator), <a href="#6.5.16.2">6.5.16.2</a> <a href="#7.6"><fenv.h></a> header, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F">F</a>,
-' ' (space character), <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a>, <a href="#7.4.1.3">7.4.1.3</a>, <a href="#H">H</a>
- <a href="#7.4.1.10">7.4.1.10</a>, <a href="#7.29.2.1.3">7.29.2.1.3</a> <a href="#7.7"><float.h></a> header, <a href="#4">4</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.7">7.7</a>, <a href="#7.22.1.3">7.22.1.3</a>,
-( ) (cast operator), <a href="#6.5.4">6.5.4</a> <a href="#7.28.4.1.1">7.28.4.1.1</a>
-( ) (function-call operator), <a href="#6.5.2.2">6.5.2.2</a> <a href="#7.8"><inttypes.h></a> header, <a href="#7.8">7.8</a>, <a href="#7.30.4">7.30.4</a>
-( ) (parentheses punctuator), <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.8.4">6.8.4</a>, <a href="#6.8.5">6.8.5</a> <a href="#7.9"><iso646.h></a> header, <a href="#4">4</a>, <a href="#7.9">7.9</a>
-( ){ } (compound-literal operator), <a href="#6.5.2.5">6.5.2.5</a> <a href="#7.10"><limits.h></a> header, <a href="#4">4</a>, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.2.5">6.2.5</a>, <a href="#7.10">7.10</a>
-* (asterisk punctuator), <a href="#6.7.6.1">6.7.6.1</a>, <a href="#6.7.6.2">6.7.6.2</a> <a href="#7.11"><locale.h></a> header, <a href="#7.11">7.11</a>, <a href="#7.30.5">7.30.5</a>
-* (indirection operator), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a> <a href="#7.12"><math.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.5">6.5</a>, <a href="#7.12">7.12</a>, <a href="#7.24">7.24</a>, <a href="#F">F</a>,
-* (multiplication operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#F.3">F.3</a>, <a href="#F.10">F.10</a>, <a href="#J.5.17">J.5.17</a>
- <a href="#G.5.1">G.5.1</a> <a href="#7.13"><setjmp.h></a> header, <a href="#7.13">7.13</a>
-*= (multiplication assignment operator), <a href="#6.5.16.2">6.5.16.2</a> <a href="#7.14"><signal.h></a> header, <a href="#7.14">7.14</a>, <a href="#7.30.6">7.30.6</a>
-+ (addition operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>, <a href="#7.15"><stdalign.h></a> header, <a href="#4">4</a>, <a href="#7.15">7.15</a>
- <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a> <a href="#7.16"><stdarg.h></a> header, <a href="#4">4</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#7.16">7.16</a>
-+ (unary plus operator), <a href="#6.5.3.3">6.5.3.3</a> <a href="#7.17"><stdatomic.h></a> header, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.17">7.17</a>
-++ (postfix increment operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a> <a href="#7.18"><stdbool.h></a> header, <a href="#4">4</a>, <a href="#7.18">7.18</a>, <a href="#7.30.7">7.30.7</a>, <a href="#H">H</a>
-++ (prefix increment operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a> <a href="#7.19"><stddef.h></a> header, <a href="#4">4</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.4.4.4">6.4.4.4</a>,
-+= (addition assignment operator), <a href="#6.5.16.2">6.5.16.2</a>
-[<a name="p653" href="#p653">page 653</a>] (<a href="#Contents">Contents</a>)
-
- <a href="#6.4.5">6.4.5</a>, <a href="#6.5.3.4">6.5.3.4</a>, <a href="#6.5.6">6.5.6</a>, <a href="#7.19">7.19</a>, <a href="#K.3.3">K.3.3</a> \x hexadecimal digits (hexadecimal-character
-<a href="#7.20"><stdint.h></a> header, <a href="#4">4</a>, <a href="#5.2.4.2">5.2.4.2</a>, <a href="#6.10.1">6.10.1</a>, <a href="#7.8">7.8</a>, escape sequence), <a href="#6.4.4.4">6.4.4.4</a>
- <a href="#7.20">7.20</a>, <a href="#7.30.8">7.30.8</a>, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a> ^ (bitwise exclusive OR operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.11">6.5.11</a>
-<a href="#7.21"><stdio.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21">7.21</a>, <a href="#7.30.9">7.30.9</a>, <a href="#F">F</a>, ^= (bitwise exclusive OR assignment operator),
- <a href="#K.3.5">K.3.5</a> <a href="#6.5.16.2">6.5.16.2</a>
-<a href="#7.22"><stdlib.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.22">7.22</a>, <a href="#7.30.10">7.30.10</a>, <a href="#F">F</a>, __alignas_is_defined macro, <a href="#7.15">7.15</a>
- <a href="#K.3.1.4">K.3.1.4</a>, <a href="#K.3.6">K.3.6</a> __bool_true_false_are_defined
-<a href="#7.23"><string.h></a> header, <a href="#7.23">7.23</a>, <a href="#7.30.11">7.30.11</a>, <a href="#K.3.7">K.3.7</a> macro, <a href="#7.18">7.18</a>
-<a href="#7.24"><tgmath.h></a> header, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> __cplusplus macro, <a href="#6.10.8">6.10.8</a>
-<a href="#7.25"><threads.h></a> header, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.25">7.25</a> __DATE__ macro, <a href="#6.10.8.1">6.10.8.1</a>
-<a href="#7.26"><time.h></a> header, <a href="#7.26">7.26</a>, <a href="#K.3.8">K.3.8</a> __FILE__ macro, <a href="#6.10.8.1">6.10.8.1</a>, <a href="#7.2.1.1">7.2.1.1</a>
-<a href="#7.27"><uchar.h></a> header, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27">7.27</a> __func__ identifier, <a href="#6.4.2.2">6.4.2.2</a>, <a href="#7.2.1.1">7.2.1.1</a>
-<a href="#7.28"><wchar.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.28">7.28</a>, __LINE__ macro, <a href="#6.10.8.1">6.10.8.1</a>, <a href="#7.2.1.1">7.2.1.1</a>
- <a href="#7.30.12">7.30.12</a>, <a href="#F">F</a>, <a href="#K.3.9">K.3.9</a> __STDC_, <a href="#6.11.9">6.11.9</a>
-<a href="#7.29"><wctype.h></a> header, <a href="#7.29">7.29</a>, <a href="#7.30.13">7.30.13</a> __STDC__ macro, <a href="#6.10.8.1">6.10.8.1</a>
-= (equal-sign punctuator), <a href="#6.7">6.7</a>, <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.9">6.7.9</a> __STDC_ANALYZABLE__ macro, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#L.1">L.1</a>
-= (simple assignment operator), <a href="#6.5.16.1">6.5.16.1</a> __STDC_HOSTED__ macro, <a href="#6.10.8.1">6.10.8.1</a>
-== (equality operator), <a href="#6.5.9">6.5.9</a> __STDC_IEC_559__ macro, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#F.1">F.1</a>
-> (greater-than operator), <a href="#6.5.8">6.5.8</a> __STDC_IEC_559_COMPLEX__ macro,
->= (greater-than-or-equal-to operator), <a href="#6.5.8">6.5.8</a> <a href="#6.10.8.3">6.10.8.3</a>, <a href="#G.1">G.1</a>
->> (right-shift operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a> __STDC_ISO_10646__ macro, <a href="#6.10.8.2">6.10.8.2</a>
->>= (right-shift assignment operator), <a href="#6.5.16.2">6.5.16.2</a> __STDC_LIB_EXT1__ macro, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#K.2">K.2</a>
-? : (conditional operator), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.15">6.5.15</a> __STDC_MB_MIGHT_NEQ_WC__ macro,
-?? (trigraph sequences), <a href="#5.2.1.1">5.2.1.1</a> <a href="#6.10.8.2">6.10.8.2</a>, <a href="#7.19">7.19</a>
-[ ] (array subscript operator), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a> __STDC_NO_COMPLEX__ macro, <a href="#6.10.8.3">6.10.8.3</a>,
-[ ] (brackets punctuator), <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.7.9">6.7.9</a> <a href="#7.3.1">7.3.1</a>
-\ (backslash character), <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a> __STDC_NO_THREADS__ macro, <a href="#6.10.8.3">6.10.8.3</a>,
-\ (escape character), <a href="#6.4.4.4">6.4.4.4</a> <a href="#7.17.1">7.17.1</a>, <a href="#7.25.1">7.25.1</a>
-\" (double-quote escape sequence), <a href="#6.4.4.4">6.4.4.4</a>, __STDC_NO_VLA__ macro, <a href="#6.10.8.3">6.10.8.3</a>
- <a href="#6.4.5">6.4.5</a>, <a href="#6.10.9">6.10.9</a> __STDC_UTF_16__ macro, <a href="#6.10.8.2">6.10.8.2</a>
-\\ (backslash escape sequence), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.10.9">6.10.9</a> __STDC_UTF_32__ macro, <a href="#6.10.8.2">6.10.8.2</a>
-\' (single-quote escape sequence), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a> __STDC_VERSION__ macro, <a href="#6.10.8.1">6.10.8.1</a>
-\0 (null character), <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a> __STDC_WANT_LIB_EXT1__ macro, <a href="#K.3.1.1">K.3.1.1</a>
- padding of binary stream, <a href="#7.21.2">7.21.2</a> __TIME__ macro, <a href="#6.10.8.1">6.10.8.1</a>
-\? (question-mark escape sequence), <a href="#6.4.4.4">6.4.4.4</a> __VA_ARGS__ identifier, <a href="#6.10.3">6.10.3</a>, <a href="#6.10.3.1">6.10.3.1</a>
-\a (alert escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a> _Alignas, <a href="#6.7.5">6.7.5</a>
-\b (backspace escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a> _Atomic type qualifier, <a href="#6.7.3">6.7.3</a>
-\f (form-feed escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, _Bool type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.2">6.3.1.2</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.17.1">7.17.1</a>,
- <a href="#7.4.1.10">7.4.1.10</a> <a href="#F.4">F.4</a>
-\n (new-line escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, _Bool type conversions, <a href="#6.3.1.2">6.3.1.2</a>
- <a href="#7.4.1.10">7.4.1.10</a> _Complex types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.3.1">7.3.1</a>, <a href="#G">G</a>
-\octal digits (octal-character escape sequence), _Complex_I macro, <a href="#7.3.1">7.3.1</a>
- <a href="#6.4.4.4">6.4.4.4</a> _Exit function, <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a>
-\r (carriage-return escape sequence), <a href="#5.2.2">5.2.2</a>, _Imaginary keyword, <a href="#G.2">G.2</a>
- <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.4.1.10">7.4.1.10</a> _Imaginary types, <a href="#7.3.1">7.3.1</a>, <a href="#G">G</a>
-\t (horizontal-tab escape sequence), <a href="#5.2.2">5.2.2</a>, _Imaginary_I macro, <a href="#7.3.1">7.3.1</a>, <a href="#G.6">G.6</a>
- <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.4.1.3">7.4.1.3</a>, <a href="#7.4.1.10">7.4.1.10</a>, <a href="#7.29.2.1.3">7.29.2.1.3</a> _IOFBF macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.5">7.21.5.5</a>, <a href="#7.21.5.6">7.21.5.6</a>
-\U (universal character names), <a href="#6.4.3">6.4.3</a> _IOLBF macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.6">7.21.5.6</a>
-\u (universal character names), <a href="#6.4.3">6.4.3</a> _IONBF macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.5">7.21.5.5</a>, <a href="#7.21.5.6">7.21.5.6</a>
-\v (vertical-tab escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, _Noreturn, <a href="#6.7.4">6.7.4</a>
- <a href="#7.4.1.10">7.4.1.10</a> _Pragma operator, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.10.9">6.10.9</a>
-
-[<a name="p654" href="#p654">page 654</a>] (<a href="#Contents">Contents</a>)
-
-_Static_assert, <a href="#6.7.10">6.7.10</a>, <a href="#7.2">7.2</a> allocated storage, order and contiguity, <a href="#7.22.3">7.22.3</a>
-_Thread_local storage-class specifier, <a href="#6.2.4">6.2.4</a>, and macro, <a href="#7.9">7.9</a>
- <a href="#6.7.1">6.7.1</a> AND operators
-{ } (braces punctuator), <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.2.3">6.7.2.3</a>, <a href="#6.7.9">6.7.9</a>, bitwise (&), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.10">6.5.10</a>
- <a href="#6.8.2">6.8.2</a> bitwise assignment (&=), <a href="#6.5.16.2">6.5.16.2</a>
-{ } (compound-literal operator), <a href="#6.5.2.5">6.5.2.5</a> logical (&&), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.13">6.5.13</a>
-| (bitwise inclusive OR operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.12">6.5.12</a> and_eq macro, <a href="#7.9">7.9</a>
-|= (bitwise inclusive OR assignment operator), anonymous structure, <a href="#6.7.2.1">6.7.2.1</a>
- <a href="#6.5.16.2">6.5.16.2</a> anonymous union, <a href="#6.7.2.1">6.7.2.1</a>
-|| (logical OR operator), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.14">6.5.14</a> ANSI/IEEE 754, <a href="#F.1">F.1</a>
-~ (bitwise complement operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.3.3">6.5.3.3</a> ANSI/IEEE 854, <a href="#F.1">F.1</a>
- argc (main function parameter), <a href="#5.1.2.2.1">5.1.2.2.1</a>
-abort function, <a href="#7.2.1.1">7.2.1.1</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.21.3">7.21.3</a>, argument, <a href="#3.3">3.3</a>
- <a href="#7.22.4.1">7.22.4.1</a>, <a href="#7.25.3.6">7.25.3.6</a>, <a href="#K.3.6.1.2">K.3.6.1.2</a> array, <a href="#6.9.1">6.9.1</a>
-abort_handler_s function, <a href="#K.3.6.1.2">K.3.6.1.2</a> default promotions, <a href="#6.5.2.2">6.5.2.2</a>
-abs function, <a href="#7.22.6.1">7.22.6.1</a> function, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.9.1">6.9.1</a>
-absolute-value functions macro, substitution, <a href="#6.10.3.1">6.10.3.1</a>
- complex, <a href="#7.3.8">7.3.8</a>, <a href="#G.6.4">G.6.4</a> argument, complex, <a href="#7.3.9.1">7.3.9.1</a>
- integer, <a href="#7.8.2.1">7.8.2.1</a>, <a href="#7.22.6.1">7.22.6.1</a> argv (main function parameter), <a href="#5.1.2.2.1">5.1.2.2.1</a>
- real, <a href="#7.12.7">7.12.7</a>, <a href="#F.10.4">F.10.4</a> arithmetic constant expression, <a href="#6.6">6.6</a>
-abstract declarator, <a href="#6.7.7">6.7.7</a> arithmetic conversions, usual, see usual arithmetic
-abstract machine, <a href="#5.1.2.3">5.1.2.3</a> conversions
-access, <a href="#3.1">3.1</a>, <a href="#6.7.3">6.7.3</a>, <a href="#L.2.1">L.2.1</a> arithmetic operators
-accuracy, see floating-point accuracy additive, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.6">6.5.6</a>, <a href="#G.5.2">G.5.2</a>
-acos functions, <a href="#7.12.4.1">7.12.4.1</a>, <a href="#F.10.1.1">F.10.1.1</a> bitwise, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.3.3">6.5.3.3</a>, <a href="#6.5.10">6.5.10</a>, <a href="#6.5.11">6.5.11</a>, <a href="#6.5.12">6.5.12</a>
-acos type-generic macro, <a href="#7.24">7.24</a> increment and decrement, <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.3.1">6.5.3.1</a>
-acosh functions, <a href="#7.12.5.1">7.12.5.1</a>, <a href="#F.10.2.1">F.10.2.1</a> multiplicative, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#G.5.1">G.5.1</a>
-acosh type-generic macro, <a href="#7.24">7.24</a> shift, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
-acquire fence, <a href="#7.17.4">7.17.4</a> unary, <a href="#6.5.3.3">6.5.3.3</a>
-acquire operation, <a href="#5.1.2.4">5.1.2.4</a> arithmetic types, <a href="#6.2.5">6.2.5</a>
-active position, <a href="#5.2.2">5.2.2</a> arithmetic, pointer, <a href="#6.5.6">6.5.6</a>
-actual argument, <a href="#3.3">3.3</a> array
-actual parameter (deprecated), <a href="#3.3">3.3</a> argument, <a href="#6.9.1">6.9.1</a>
-addition assignment operator (+=), <a href="#6.5.16.2">6.5.16.2</a> declarator, <a href="#6.7.6.2">6.7.6.2</a>
-addition operator (+), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>, initialization, <a href="#6.7.9">6.7.9</a>
- <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a> multidimensional, <a href="#6.5.2.1">6.5.2.1</a>
-additive expressions, <a href="#6.5.6">6.5.6</a>, <a href="#G.5.2">G.5.2</a> parameter, <a href="#6.9.1">6.9.1</a>
-address constant, <a href="#6.6">6.6</a> storage order, <a href="#6.5.2.1">6.5.2.1</a>
-address operator (&), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a> subscript operator ([ ]), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>
-address-free, <a href="#7.17.5">7.17.5</a> subscripting, <a href="#6.5.2.1">6.5.2.1</a>
-aggregate initialization, <a href="#6.7.9">6.7.9</a> type, <a href="#6.2.5">6.2.5</a>
-aggregate types, <a href="#6.2.5">6.2.5</a> type conversion, <a href="#6.3.2.1">6.3.2.1</a>
-alert escape sequence (\a), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a> variable length, <a href="#6.7.6">6.7.6</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.10.8.3">6.10.8.3</a>
-aliasing, <a href="#6.5">6.5</a> arrow operator (->), <a href="#6.5.2.3">6.5.2.3</a>
-alignas macro, <a href="#7.15">7.15</a> as-if rule, <a href="#5.1.2.3">5.1.2.3</a>
-aligned_alloc function, <a href="#7.22.3">7.22.3</a>, <a href="#7.22.3.1">7.22.3.1</a> ASCII code set, <a href="#5.2.1.1">5.2.1.1</a>
-alignment, <a href="#3.2">3.2</a>, <a href="#6.2.8">6.2.8</a>, <a href="#7.22.3.1">7.22.3.1</a> asctime function, <a href="#7.26.3.1">7.26.3.1</a>
- pointer, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.2.3">6.3.2.3</a> asctime_s function, <a href="#K.3.8.2">K.3.8.2</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a>
- structure/union member, <a href="#6.7.2.1">6.7.2.1</a> asin functions, <a href="#7.12.4.2">7.12.4.2</a>, <a href="#F.10.1.2">F.10.1.2</a>
-alignment specifier, <a href="#6.7.5">6.7.5</a> asin type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
-alignof operator, <a href="#6.5.3">6.5.3</a>, <a href="#6.5.3.4">6.5.3.4</a> asinh functions, <a href="#7.12.5.2">7.12.5.2</a>, <a href="#F.10.2.2">F.10.2.2</a>
-
-[<a name="p655" href="#p655">page 655</a>] (<a href="#Contents">Contents</a>)
-
-asinh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> atomic_is_lock_free generic function,
-asm keyword, <a href="#J.5.10">J.5.10</a> <a href="#7.17.5.1">7.17.5.1</a>
-assert macro, <a href="#7.2.1.1">7.2.1.1</a> ATOMIC_LLONG_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a>
-assert.h header, <a href="#7.2">7.2</a> atomic_load generic functions, <a href="#7.17.7.2">7.17.7.2</a>
-assignment ATOMIC_LONG_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a>
- compound, <a href="#6.5.16.2">6.5.16.2</a> ATOMIC_SHORT_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a>
- conversion, <a href="#6.5.16.1">6.5.16.1</a> atomic_signal_fence function, <a href="#7.17.4.2">7.17.4.2</a>
- expression, <a href="#6.5.16">6.5.16</a> atomic_store generic functions, <a href="#7.17.7.1">7.17.7.1</a>
- operators, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.16">6.5.16</a> atomic_thread_fence function, <a href="#7.17.4.1">7.17.4.1</a>
- simple, <a href="#6.5.16.1">6.5.16.1</a> ATOMIC_VAR_INIT macro, <a href="#7.17.2.1">7.17.2.1</a>
-associativity of operators, <a href="#6.5">6.5</a> ATOMIC_WCHAR_T_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a>
-asterisk punctuator (*), <a href="#6.7.6.1">6.7.6.1</a>, <a href="#6.7.6.2">6.7.6.2</a> atomics header, <a href="#7.17">7.17</a>
-at_quick_exit function, <a href="#7.22.4.2">7.22.4.2</a>, <a href="#7.22.4.3">7.22.4.3</a>, auto storage-class specifier, <a href="#6.7.1">6.7.1</a>, <a href="#6.9">6.9</a>
- <a href="#7.22.4.4">7.22.4.4</a>, <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a> automatic storage duration, <a href="#5.2.3">5.2.3</a>, <a href="#6.2.4">6.2.4</a>
-atan functions, <a href="#7.12.4.3">7.12.4.3</a>, <a href="#F.10.1.3">F.10.1.3</a>
-atan type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> backslash character (\), <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a>
-atan2 functions, <a href="#7.12.4.4">7.12.4.4</a>, <a href="#F.10.1.4">F.10.1.4</a> backslash escape sequence (\\), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.10.9">6.10.9</a>
-atan2 type-generic macro, <a href="#7.24">7.24</a> backspace escape sequence (\b), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>
-atanh functions, <a href="#7.12.5.3">7.12.5.3</a>, <a href="#F.10.2.3">F.10.2.3</a> basic character set, <a href="#3.6">3.6</a>, <a href="#3.7.2">3.7.2</a>, <a href="#5.2.1">5.2.1</a>
-atanh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> basic types, <a href="#6.2.5">6.2.5</a>
-atexit function, <a href="#7.22.4.2">7.22.4.2</a>, <a href="#7.22.4.3">7.22.4.3</a>, <a href="#7.22.4.4">7.22.4.4</a>, behavior, <a href="#3.4">3.4</a>
- <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a>, <a href="#J.5.13">J.5.13</a> binary streams, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.2">7.21.9.2</a>,
-atof function, <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.1">7.22.1.1</a> <a href="#7.21.9.4">7.21.9.4</a>
-atoi function, <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.2">7.22.1.2</a> bit, <a href="#3.5">3.5</a>
-atol function, <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.2">7.22.1.2</a> high order, <a href="#3.6">3.6</a>
-atoll function, <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.2">7.22.1.2</a> low order, <a href="#3.6">3.6</a>
-atomic lock-free macros, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.5">7.17.5</a> bit-field, <a href="#6.7.2.1">6.7.2.1</a>
-atomic operations, <a href="#5.1.2.4">5.1.2.4</a> bitand macro, <a href="#7.9">7.9</a>
-atomic types, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.2.5">6.2.5</a>, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.3.2.1">6.3.2.1</a>, bitor macro, <a href="#7.9">7.9</a>
- <a href="#6.5.2.3">6.5.2.3</a>, <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.16.2">6.5.16.2</a>, <a href="#6.7.2.4">6.7.2.4</a>, <a href="#6.10.8.3">6.10.8.3</a>, bitwise operators, <a href="#6.5">6.5</a>
- <a href="#7.17.6">7.17.6</a> AND, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.10">6.5.10</a>
-atomic_address type, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.6">7.17.6</a> AND assignment (&=), <a href="#6.5.16.2">6.5.16.2</a>
-ATOMIC_ADDRESS_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a> complement (~), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.3.3">6.5.3.3</a>
-atomic_bool type, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.6">7.17.6</a> exclusive OR, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.11">6.5.11</a>
-ATOMIC_CHAR16_T_LOCK_FREE macro, exclusive OR assignment (^=), <a href="#6.5.16.2">6.5.16.2</a>
- <a href="#7.17.1">7.17.1</a> inclusive OR, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.12">6.5.12</a>
-ATOMIC_CHAR32_T_LOCK_FREE macro, inclusive OR assignment (|=), <a href="#6.5.16.2">6.5.16.2</a>
- <a href="#7.17.1">7.17.1</a> shift, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
-ATOMIC_CHAR_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a> blank character, <a href="#7.4.1.3">7.4.1.3</a>
-atomic_compare_exchange generic block, <a href="#6.8">6.8</a>, <a href="#6.8.2">6.8.2</a>, <a href="#6.8.4">6.8.4</a>, <a href="#6.8.5">6.8.5</a>
- functions, <a href="#7.17.7.4">7.17.7.4</a> block scope, <a href="#6.2.1">6.2.1</a>
-atomic_exchange generic functions, <a href="#7.17.7.3">7.17.7.3</a> block structure, <a href="#6.2.1">6.2.1</a>
-atomic_fetch and modify generic functions, bold type convention, <a href="#6.1">6.1</a>
- <a href="#7.17.7.5">7.17.7.5</a> bool macro, <a href="#7.18">7.18</a>
-atomic_flag type, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.8">7.17.8</a> boolean type, <a href="#6.3.1.2">6.3.1.2</a>
-atomic_flag_clear functions, <a href="#7.17.8.2">7.17.8.2</a> boolean type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.2">6.3.1.2</a>
-ATOMIC_FLAG_INIT macro, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.8">7.17.8</a> bounded undefined behavior, <a href="#L.2.2">L.2.2</a>
-atomic_flag_test_and_set functions, braces punctuator ({ }), <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.2.3">6.7.2.3</a>, <a href="#6.7.9">6.7.9</a>,
- <a href="#7.17.8.1">7.17.8.1</a> <a href="#6.8.2">6.8.2</a>
-atomic_init generic function, <a href="#7.17.2.2">7.17.2.2</a> brackets operator ([ ]), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>
-ATOMIC_INT_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a> brackets punctuator ([ ]), <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.7.9">6.7.9</a>
-
-[<a name="p656" href="#p656">page 656</a>] (<a href="#Contents">Contents</a>)
-
-branch cuts, <a href="#7.3.3">7.3.3</a> type-generic macro for, <a href="#7.24">7.24</a>
-break statement, <a href="#6.8.6.3">6.8.6.3</a> ccosh functions, <a href="#7.3.6.4">7.3.6.4</a>, <a href="#G.6.2.4">G.6.2.4</a>
-broken-down time, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.3">7.26.2.3</a>, <a href="#7.26.3">7.26.3</a>, type-generic macro for, <a href="#7.24">7.24</a>
- <a href="#7.26.3.1">7.26.3.1</a>, <a href="#7.26.3.3">7.26.3.3</a>, <a href="#7.26.3.4">7.26.3.4</a>, <a href="#7.26.3.5">7.26.3.5</a>, ceil functions, <a href="#7.12.9.1">7.12.9.1</a>, <a href="#F.10.6.1">F.10.6.1</a>
- <a href="#K.3.8.2.1">K.3.8.2.1</a>, <a href="#K.3.8.2.3">K.3.8.2.3</a>, <a href="#K.3.8.2.4">K.3.8.2.4</a> ceil type-generic macro, <a href="#7.24">7.24</a>
-bsearch function, <a href="#7.22.5">7.22.5</a>, <a href="#7.22.5.1">7.22.5.1</a> cerf function, <a href="#7.30.1">7.30.1</a>
-bsearch_s function, <a href="#K.3.6.3">K.3.6.3</a>, <a href="#K.3.6.3.1">K.3.6.3.1</a> cerfc function, <a href="#7.30.1">7.30.1</a>
-btowc function, <a href="#7.28.6.1.1">7.28.6.1.1</a> cexp functions, <a href="#7.3.7.1">7.3.7.1</a>, <a href="#G.6.3.1">G.6.3.1</a>
-BUFSIZ macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.5.5">7.21.5.5</a> type-generic macro for, <a href="#7.24">7.24</a>
-byte, <a href="#3.6">3.6</a>, <a href="#6.5.3.4">6.5.3.4</a> cexp2 function, <a href="#7.30.1">7.30.1</a>
-byte input/output functions, <a href="#7.21.1">7.21.1</a> cexpm1 function, <a href="#7.30.1">7.30.1</a>
-byte-oriented stream, <a href="#7.21.2">7.21.2</a> char type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.7.2">6.7.2</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a>,
- <a href="#K.3.9.1.2">K.3.9.1.2</a>
-C program, <a href="#5.1.1.1">5.1.1.1</a> char type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>,
-c16rtomb function, <a href="#7.27.1.2">7.27.1.2</a> <a href="#6.3.1.8">6.3.1.8</a>
-c32rtomb function, <a href="#7.27.1.4">7.27.1.4</a> char16_t type, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.10.8.2">6.10.8.2</a>, <a href="#7.27">7.27</a>
-cabs functions, <a href="#7.3.8.1">7.3.8.1</a>, <a href="#G.6">G.6</a> char32_t type, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.10.8.2">6.10.8.2</a>, <a href="#7.27">7.27</a>
- type-generic macro for, <a href="#7.24">7.24</a> CHAR_BIT macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.7.2.1">6.7.2.1</a>
-cacos functions, <a href="#7.3.5.1">7.3.5.1</a>, <a href="#G.6.1.1">G.6.1.1</a> CHAR_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
- type-generic macro for, <a href="#7.24">7.24</a> CHAR_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>
-cacosh functions, <a href="#7.3.6.1">7.3.6.1</a>, <a href="#G.6.2.1">G.6.2.1</a> character, <a href="#3.7">3.7</a>, <a href="#3.7.1">3.7.1</a>
- type-generic macro for, <a href="#7.24">7.24</a> character array initialization, <a href="#6.7.9">6.7.9</a>
-calendar time, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.2">7.26.2.2</a>, <a href="#7.26.2.3">7.26.2.3</a>, <a href="#7.26.2.4">7.26.2.4</a>, character case mapping functions, <a href="#7.4.2">7.4.2</a>
- <a href="#7.26.3.2">7.26.3.2</a>, <a href="#7.26.3.3">7.26.3.3</a>, <a href="#7.26.3.4">7.26.3.4</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a>, wide character, <a href="#7.29.3.1">7.29.3.1</a>
- <a href="#K.3.8.2.3">K.3.8.2.3</a>, <a href="#K.3.8.2.4">K.3.8.2.4</a> extensible, <a href="#7.29.3.2">7.29.3.2</a>
-call by value, <a href="#6.5.2.2">6.5.2.2</a> character classification functions, <a href="#7.4.1">7.4.1</a>
-call_once function, <a href="#7.25.1">7.25.1</a>, <a href="#7.25.2.1">7.25.2.1</a> wide character, <a href="#7.29.2.1">7.29.2.1</a>
-calloc function, <a href="#7.22.3">7.22.3</a>, <a href="#7.22.3.2">7.22.3.2</a> extensible, <a href="#7.29.2.2">7.29.2.2</a>
-carg functions, <a href="#7.3.9.1">7.3.9.1</a>, <a href="#G.6">G.6</a> character constant, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a>
-carg type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> character display semantics, <a href="#5.2.2">5.2.2</a>
-carriage-return escape sequence (\r), <a href="#5.2.2">5.2.2</a>, character handling header, <a href="#7.4">7.4</a>, <a href="#7.11.1.1">7.11.1.1</a>
- <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.4.1.10">7.4.1.10</a> character input/output functions, <a href="#7.21.7">7.21.7</a>, <a href="#K.3.5.4">K.3.5.4</a>
-carries a dependency, <a href="#5.1.2.4">5.1.2.4</a> wide character, <a href="#7.28.3">7.28.3</a>
-case label, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a> character sets, <a href="#5.2.1">5.2.1</a>
-case mapping functions character string literal, see string literal
- character, <a href="#7.4.2">7.4.2</a> character type conversion, <a href="#6.3.1.1">6.3.1.1</a>
- wide character, <a href="#7.29.3.1">7.29.3.1</a> character types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.9">6.7.9</a>
- extensible, <a href="#7.29.3.2">7.29.3.2</a> cimag functions, <a href="#7.3.9.2">7.3.9.2</a>, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#G.6">G.6</a>
-casin functions, <a href="#7.3.5.2">7.3.5.2</a>, <a href="#G.6">G.6</a> cimag type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
- type-generic macro for, <a href="#7.24">7.24</a> cis function, <a href="#G.6">G.6</a>
-casinh functions, <a href="#7.3.6.2">7.3.6.2</a>, <a href="#G.6.2.2">G.6.2.2</a> classification functions
- type-generic macro for, <a href="#7.24">7.24</a> character, <a href="#7.4.1">7.4.1</a>
-cast expression, <a href="#6.5.4">6.5.4</a> floating-point, <a href="#7.12.3">7.12.3</a>
-cast operator (( )), <a href="#6.5.4">6.5.4</a> wide character, <a href="#7.29.2.1">7.29.2.1</a>
-catan functions, <a href="#7.3.5.3">7.3.5.3</a>, <a href="#G.6">G.6</a> extensible, <a href="#7.29.2.2">7.29.2.2</a>
- type-generic macro for, <a href="#7.24">7.24</a> clearerr function, <a href="#7.21.10.1">7.21.10.1</a>
-catanh functions, <a href="#7.3.6.3">7.3.6.3</a>, <a href="#G.6.2.3">G.6.2.3</a> clgamma function, <a href="#7.30.1">7.30.1</a>
- type-generic macro for, <a href="#7.24">7.24</a> clock function, <a href="#7.26.2.1">7.26.2.1</a>
-cbrt functions, <a href="#7.12.7.1">7.12.7.1</a>, <a href="#F.10.4.1">F.10.4.1</a> clock_t type, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.1">7.26.2.1</a>
-cbrt type-generic macro, <a href="#7.24">7.24</a> CLOCKS_PER_SEC macro, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.1">7.26.2.1</a>
-ccos functions, <a href="#7.3.5.4">7.3.5.4</a>, <a href="#G.6">G.6</a> clog functions, <a href="#7.3.7.2">7.3.7.2</a>, <a href="#G.6.3.2">G.6.3.2</a>
-
-[<a name="p657" href="#p657">page 657</a>] (<a href="#Contents">Contents</a>)
-
- type-generic macro for, <a href="#7.24">7.24</a> string, <a href="#7.23.3">7.23.3</a>, <a href="#K.3.7.2">K.3.7.2</a>
-clog10 function, <a href="#7.30.1">7.30.1</a> wide string, <a href="#7.28.4.3">7.28.4.3</a>, <a href="#K.3.9.2.2">K.3.9.2.2</a>
-clog1p function, <a href="#7.30.1">7.30.1</a> concatenation, preprocessing, see preprocessing
-clog2 function, <a href="#7.30.1">7.30.1</a> concatenation
-CMPLX macros, <a href="#7.3.9.3">7.3.9.3</a> conceptual models, <a href="#5.1">5.1</a>
-cnd_broadcast function, <a href="#7.25.3.1">7.25.3.1</a>, <a href="#7.25.3.5">7.25.3.5</a>, conditional features, <a href="#4">4</a>, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.10.8.3">6.10.8.3</a>,
- <a href="#7.25.3.6">7.25.3.6</a> <a href="#7.1.2">7.1.2</a>, <a href="#F.1">F.1</a>, <a href="#G.1">G.1</a>, <a href="#K.2">K.2</a>, <a href="#L.1">L.1</a>
-cnd_destroy function, <a href="#7.25.3.2">7.25.3.2</a> conditional inclusion, <a href="#6.10.1">6.10.1</a>
-cnd_init function, <a href="#7.25.3.3">7.25.3.3</a> conditional operator (? :), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.15">6.5.15</a>
-cnd_signal function, <a href="#7.25.3.4">7.25.3.4</a>, <a href="#7.25.3.5">7.25.3.5</a>, conflict, <a href="#5.1.2.4">5.1.2.4</a>
- <a href="#7.25.3.6">7.25.3.6</a> conformance, <a href="#4">4</a>
-cnd_t type, <a href="#7.25.1">7.25.1</a> conj functions, <a href="#7.3.9.4">7.3.9.4</a>, <a href="#G.6">G.6</a>
-cnd_timedwait function, <a href="#7.25.3.5">7.25.3.5</a> conj type-generic macro, <a href="#7.24">7.24</a>
-cnd_wait function, <a href="#7.25.3.3">7.25.3.3</a>, <a href="#7.25.3.6">7.25.3.6</a> const type qualifier, <a href="#6.7.3">6.7.3</a>
-collating sequences, <a href="#5.2.1">5.2.1</a> const-qualified type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.7.3">6.7.3</a>
-colon punctuator (:), <a href="#6.7.2.1">6.7.2.1</a> constant expression, <a href="#6.6">6.6</a>, <a href="#F.8.4">F.8.4</a>
-comma operator (,), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.17">6.5.17</a> constants, <a href="#6.4.4">6.4.4</a>
-comma punctuator (,), <a href="#6.5.2">6.5.2</a>, <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.7.2.2">6.7.2.2</a>, as primary expression, <a href="#6.5.1">6.5.1</a>
- <a href="#6.7.2.3">6.7.2.3</a>, <a href="#6.7.9">6.7.9</a> character, <a href="#6.4.4.4">6.4.4.4</a>
-command processor, <a href="#7.22.4.8">7.22.4.8</a> enumeration, <a href="#6.2.1">6.2.1</a>, <a href="#6.4.4.3">6.4.4.3</a>
-comment delimiters (/* */ and //), <a href="#6.4.9">6.4.9</a> floating, <a href="#6.4.4.2">6.4.4.2</a>
-comments, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>, <a href="#6.4.9">6.4.9</a> hexadecimal, <a href="#6.4.4.1">6.4.4.1</a>
-common extensions, <a href="#J.5">J.5</a> integer, <a href="#6.4.4.1">6.4.4.1</a>
-common initial sequence, <a href="#6.5.2.3">6.5.2.3</a> octal, <a href="#6.4.4.1">6.4.4.1</a>
-common real type, <a href="#6.3.1.8">6.3.1.8</a> constraint, <a href="#3.8">3.8</a>, <a href="#4">4</a>
-common warnings, <a href="#I">I</a> constraint_handler_t type, <a href="#K.3.6">K.3.6</a>
-comparison functions, <a href="#7.22.5">7.22.5</a>, <a href="#7.22.5.1">7.22.5.1</a>, <a href="#7.22.5.2">7.22.5.2</a>, consume operation, <a href="#5.1.2.4">5.1.2.4</a>
- <a href="#K.3.6.3">K.3.6.3</a>, <a href="#K.3.6.3.1">K.3.6.3.1</a>, <a href="#K.3.6.3.2">K.3.6.3.2</a> content of structure/union/enumeration, <a href="#6.7.2.3">6.7.2.3</a>
- string, <a href="#7.23.4">7.23.4</a> contiguity of allocated storage, <a href="#7.22.3">7.22.3</a>
- wide string, <a href="#7.28.4.4">7.28.4.4</a> continue statement, <a href="#6.8.6.2">6.8.6.2</a>
-comparison macros, <a href="#7.12.14">7.12.14</a> contracted expression, <a href="#6.5">6.5</a>, <a href="#7.12.2">7.12.2</a>, <a href="#F.7">F.7</a>
-comparison, pointer, <a href="#6.5.8">6.5.8</a> control character, <a href="#5.2.1">5.2.1</a>, <a href="#7.4">7.4</a>
-compatible type, <a href="#6.2.7">6.2.7</a>, <a href="#6.7.2">6.7.2</a>, <a href="#6.7.3">6.7.3</a>, <a href="#6.7.6">6.7.6</a> control wide character, <a href="#7.29.2">7.29.2</a>
-compl macro, <a href="#7.9">7.9</a> conversion, <a href="#6.3">6.3</a>
-complement operator (~), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.3.3">6.5.3.3</a> arithmetic operands, <a href="#6.3.1">6.3.1</a>
-complete type, <a href="#6.2.5">6.2.5</a> array argument, <a href="#6.9.1">6.9.1</a>
-complex macro, <a href="#7.3.1">7.3.1</a> array parameter, <a href="#6.9.1">6.9.1</a>
-complex numbers, <a href="#6.2.5">6.2.5</a>, <a href="#G">G</a> arrays, <a href="#6.3.2.1">6.3.2.1</a>
-complex type conversion, <a href="#6.3.1.6">6.3.1.6</a>, <a href="#6.3.1.7">6.3.1.7</a> boolean, <a href="#6.3.1.2">6.3.1.2</a>
-complex type domain, <a href="#6.2.5">6.2.5</a> boolean, characters, and integers, <a href="#6.3.1.1">6.3.1.1</a>
-complex types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#G">G</a> by assignment, <a href="#6.5.16.1">6.5.16.1</a>
-complex.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, by return statement, <a href="#6.8.6.4">6.8.6.4</a>
- <a href="#7.3">7.3</a>, <a href="#7.24">7.24</a>, <a href="#7.30.1">7.30.1</a>, <a href="#G.6">G.6</a>, <a href="#J.5.17">J.5.17</a> complex types, <a href="#6.3.1.6">6.3.1.6</a>
-compliance, see conformance explicit, <a href="#6.3">6.3</a>
-components of time, <a href="#7.26.1">7.26.1</a>, <a href="#K.3.8.1">K.3.8.1</a> function, <a href="#6.3.2.1">6.3.2.1</a>
-composite type, <a href="#6.2.7">6.2.7</a> function argument, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.9.1">6.9.1</a>
-compound assignment, <a href="#6.5.16.2">6.5.16.2</a> function designators, <a href="#6.3.2.1">6.3.2.1</a>
-compound literals, <a href="#6.5.2.5">6.5.2.5</a> function parameter, <a href="#6.9.1">6.9.1</a>
-compound statement, <a href="#6.8.2">6.8.2</a> imaginary, <a href="#G.4.1">G.4.1</a>
-compound-literal operator (( ){ }), <a href="#6.5.2.5">6.5.2.5</a> imaginary and complex, <a href="#G.4.3">G.4.3</a>
-concatenation functions implicit, <a href="#6.3">6.3</a>
-
-[<a name="p658" href="#p658">page 658</a>] (<a href="#Contents">Contents</a>)
-
- lvalues, <a href="#6.3.2.1">6.3.2.1</a> csinh functions, <a href="#7.3.6.5">7.3.6.5</a>, <a href="#G.6.2.5">G.6.2.5</a>
- pointer, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a> type-generic macro for, <a href="#7.24">7.24</a>
- real and complex, <a href="#6.3.1.7">6.3.1.7</a> csqrt functions, <a href="#7.3.8.3">7.3.8.3</a>, <a href="#G.6.4.2">G.6.4.2</a>
- real and imaginary, <a href="#G.4.2">G.4.2</a> type-generic macro for, <a href="#7.24">7.24</a>
- real floating and integer, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#F.3">F.3</a>, <a href="#F.4">F.4</a> ctan functions, <a href="#7.3.5.6">7.3.5.6</a>, <a href="#G.6">G.6</a>
- real floating types, <a href="#6.3.1.5">6.3.1.5</a>, <a href="#F.3">F.3</a> type-generic macro for, <a href="#7.24">7.24</a>
- signed and unsigned integers, <a href="#6.3.1.3">6.3.1.3</a> ctanh functions, <a href="#7.3.6.6">7.3.6.6</a>, <a href="#G.6.2.6">G.6.2.6</a>
- usual arithmetic, see usual arithmetic type-generic macro for, <a href="#7.24">7.24</a>
- conversions ctgamma function, <a href="#7.30.1">7.30.1</a>
- void type, <a href="#6.3.2.2">6.3.2.2</a> ctime function, <a href="#7.26.3.2">7.26.3.2</a>
-conversion functions ctime_s function, <a href="#K.3.8.2">K.3.8.2</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a>
- multibyte/wide character, <a href="#7.22.7">7.22.7</a>, <a href="#K.3.6.4">K.3.6.4</a> ctype.h header, <a href="#7.4">7.4</a>, <a href="#7.30.2">7.30.2</a>
- extended, <a href="#7.28.6">7.28.6</a>, <a href="#K.3.9.3">K.3.9.3</a> current object, <a href="#6.7.9">6.7.9</a>
- restartable, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a> CX_LIMITED_RANGE pragma, <a href="#6.10.6">6.10.6</a>, <a href="#7.3.4">7.3.4</a>
- multibyte/wide string, <a href="#7.22.8">7.22.8</a>, <a href="#K.3.6.5">K.3.6.5</a>
- restartable, <a href="#7.28.6.4">7.28.6.4</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a> data race, <a href="#5.1.2.4">5.1.2.4</a>, <a href="#7.1.4">7.1.4</a>, <a href="#7.22.2.1">7.22.2.1</a>, <a href="#7.22.4.6">7.22.4.6</a>,
- numeric, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1">7.22.1</a> <a href="#7.23.5.8">7.23.5.8</a>, <a href="#7.23.6.2">7.23.6.2</a>, <a href="#7.26.3">7.26.3</a>, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>,
- wide string, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.28.4.1">7.28.4.1</a> <a href="#7.28.6.4">7.28.6.4</a>
- single byte/wide character, <a href="#7.28.6.1">7.28.6.1</a> data stream, see streams
- time, <a href="#7.26.3">7.26.3</a>, <a href="#K.3.8.2">K.3.8.2</a> date and time header, <a href="#7.26">7.26</a>, <a href="#K.3.8">K.3.8</a>
- wide character, <a href="#7.28.5">7.28.5</a> Daylight Saving Time, <a href="#7.26.1">7.26.1</a>
-conversion specifier, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, DBL_DECIMAL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.28.2.2">7.28.2.2</a> DBL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-conversion state, <a href="#7.22.7">7.22.7</a>, <a href="#7.27.1">7.27.1</a>, <a href="#7.27.1.1">7.27.1.1</a>, DBL_EPSILON macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.27.1.2">7.27.1.2</a>, <a href="#7.27.1.3">7.27.1.3</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.6">7.28.6</a>, DBL_HAS_SUBNORM macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.28.6.2.1">7.28.6.2.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#7.28.6.3.2">7.28.6.3.2</a>, <a href="#7.28.6.3.3">7.28.6.3.3</a>, DBL_MANT_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.28.6.4">7.28.6.4</a>, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>, <a href="#K.3.6.4">K.3.6.4</a>, DBL_MAX macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#K.3.9.3.1">K.3.9.3.1</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a>, <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a>, DBL_MAX_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a> DBL_MAX_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-conversion state functions, <a href="#7.28.6.2">7.28.6.2</a> DBL_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-copying functions DBL_MIN_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- string, <a href="#7.23.2">7.23.2</a>, <a href="#K.3.7.1">K.3.7.1</a> DBL_MIN_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- wide string, <a href="#7.28.4.2">7.28.4.2</a>, <a href="#K.3.9.2.1">K.3.9.2.1</a> DBL_TRUE_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-copysign functions, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#7.12.11.1">7.12.11.1</a>, <a href="#F.3">F.3</a>, decimal constant, <a href="#6.4.4.1">6.4.4.1</a>
- <a href="#F.10.8.1">F.10.8.1</a> decimal digit, <a href="#5.2.1">5.2.1</a>
-copysign type-generic macro, <a href="#7.24">7.24</a> decimal-point character, <a href="#7.1.1">7.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
-correctly rounded result, <a href="#3.9">3.9</a> DECIMAL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.6.1">7.21.6.1</a>,
-corresponding real type, <a href="#6.2.5">6.2.5</a> <a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#F.5">F.5</a>
-cos functions, <a href="#7.12.4.5">7.12.4.5</a>, <a href="#F.10.1.5">F.10.1.5</a> declaration specifiers, <a href="#6.7">6.7</a>
-cos type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> declarations, <a href="#6.7">6.7</a>
-cosh functions, <a href="#7.12.5.4">7.12.5.4</a>, <a href="#F.10.2.4">F.10.2.4</a> function, <a href="#6.7.6.3">6.7.6.3</a>
-cosh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> pointer, <a href="#6.7.6.1">6.7.6.1</a>
-cpow functions, <a href="#7.3.8.2">7.3.8.2</a>, <a href="#G.6.4.1">G.6.4.1</a> structure/union, <a href="#6.7.2.1">6.7.2.1</a>
- type-generic macro for, <a href="#7.24">7.24</a> typedef, <a href="#6.7.8">6.7.8</a>
-cproj functions, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#G.6">G.6</a> declarator, <a href="#6.7.6">6.7.6</a>
-cproj type-generic macro, <a href="#7.24">7.24</a> abstract, <a href="#6.7.7">6.7.7</a>
-creal functions, <a href="#7.3.9.6">7.3.9.6</a>, <a href="#G.6">G.6</a> declarator type derivation, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.6">6.7.6</a>
-creal type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> decrement operators, see arithmetic operators,
-critical undefined behavior, <a href="#L.2.3">L.2.3</a> increment and decrement
-csin functions, <a href="#7.3.5.5">7.3.5.5</a>, <a href="#G.6">G.6</a> default argument promotions, <a href="#6.5.2.2">6.5.2.2</a>
- type-generic macro for, <a href="#7.24">7.24</a> default initialization, <a href="#6.7.9">6.7.9</a>
-
-[<a name="p659" href="#p659">page 659</a>] (<a href="#Contents">Contents</a>)
-
-default label, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a> elif preprocessing directive, <a href="#6.10.1">6.10.1</a>
-define preprocessing directive, <a href="#6.10.3">6.10.3</a> ellipsis punctuator (...), <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.10.3">6.10.3</a>
-defined operator, <a href="#6.10.1">6.10.1</a>, <a href="#6.10.8">6.10.8</a> else preprocessing directive, <a href="#6.10.1">6.10.1</a>
-definition, <a href="#6.7">6.7</a> else statement, <a href="#6.8.4.1">6.8.4.1</a>
- function, <a href="#6.9.1">6.9.1</a> empty statement, <a href="#6.8.3">6.8.3</a>
-dependency-ordered before, <a href="#5.1.2.4">5.1.2.4</a> encoding error, <a href="#7.21.3">7.21.3</a>, <a href="#7.27.1.1">7.27.1.1</a>, <a href="#7.27.1.2">7.27.1.2</a>,
-derived declarator types, <a href="#6.2.5">6.2.5</a> <a href="#7.27.1.3">7.27.1.3</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.3.1">7.28.3.1</a>, <a href="#7.28.3.3">7.28.3.3</a>,
-derived types, <a href="#6.2.5">6.2.5</a> <a href="#7.28.6.3.2">7.28.6.3.2</a>, <a href="#7.28.6.3.3">7.28.6.3.3</a>, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>,
-designated initializer, <a href="#6.7.9">6.7.9</a> <a href="#K.3.6.5.1">K.3.6.5.1</a>, <a href="#K.3.6.5.2">K.3.6.5.2</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a>, <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a>,
-destringizing, <a href="#6.10.9">6.10.9</a> <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a>
-device input/output, <a href="#5.1.2.3">5.1.2.3</a> end-of-file, <a href="#7.28.1">7.28.1</a>
-diagnostic message, <a href="#3.10">3.10</a>, <a href="#5.1.1.3">5.1.1.3</a> end-of-file indicator, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.1">7.21.7.1</a>,
-diagnostics, <a href="#5.1.1.3">5.1.1.3</a> <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.7.6">7.21.7.6</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.2">7.21.9.2</a>,
-diagnostics header, <a href="#7.2">7.2</a> <a href="#7.21.9.3">7.21.9.3</a>, <a href="#7.21.10.1">7.21.10.1</a>, <a href="#7.21.10.2">7.21.10.2</a>, <a href="#7.28.3.1">7.28.3.1</a>,
-difftime function, <a href="#7.26.2.2">7.26.2.2</a> <a href="#7.28.3.10">7.28.3.10</a>
-digit, <a href="#5.2.1">5.2.1</a>, <a href="#7.4">7.4</a> end-of-file macro, see EOF macro
-digraphs, <a href="#6.4.6">6.4.6</a> end-of-line indicator, <a href="#5.2.1">5.2.1</a>
-direct input/output functions, <a href="#7.21.8">7.21.8</a> endif preprocessing directive, <a href="#6.10.1">6.10.1</a>
-display device, <a href="#5.2.2">5.2.2</a> enum type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>, <a href="#6.7.2.2">6.7.2.2</a>
-div function, <a href="#7.22.6.2">7.22.6.2</a> enumerated type, <a href="#6.2.5">6.2.5</a>
-div_t type, <a href="#7.22">7.22</a> enumeration, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2.2">6.7.2.2</a>
-division assignment operator (/=), <a href="#6.5.16.2">6.5.16.2</a> enumeration constant, <a href="#6.2.1">6.2.1</a>, <a href="#6.4.4.3">6.4.4.3</a>
-division operator (/), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#F.3">F.3</a>, <a href="#G.5.1">G.5.1</a> enumeration content, <a href="#6.7.2.3">6.7.2.3</a>
-do statement, <a href="#6.8.5.2">6.8.5.2</a> enumeration members, <a href="#6.7.2.2">6.7.2.2</a>
-documentation of implementation, <a href="#4">4</a> enumeration specifiers, <a href="#6.7.2.2">6.7.2.2</a>
-domain error, <a href="#7.12.1">7.12.1</a>, <a href="#7.12.4.1">7.12.4.1</a>, <a href="#7.12.4.2">7.12.4.2</a>, <a href="#7.12.4.4">7.12.4.4</a>, enumeration tag, <a href="#6.2.3">6.2.3</a>, <a href="#6.7.2.3">6.7.2.3</a>
- <a href="#7.12.5.1">7.12.5.1</a>, <a href="#7.12.5.3">7.12.5.3</a>, <a href="#7.12.6.5">7.12.6.5</a>, <a href="#7.12.6.7">7.12.6.7</a>, enumerator, <a href="#6.7.2.2">6.7.2.2</a>
- <a href="#7.12.6.8">7.12.6.8</a>, <a href="#7.12.6.9">7.12.6.9</a>, <a href="#7.12.6.10">7.12.6.10</a>, <a href="#7.12.6.11">7.12.6.11</a>, environment, <a href="#5">5</a>
- <a href="#7.12.7.4">7.12.7.4</a>, <a href="#7.12.7.5">7.12.7.5</a>, <a href="#7.12.8.4">7.12.8.4</a>, <a href="#7.12.9.5">7.12.9.5</a>, environment functions, <a href="#7.22.4">7.22.4</a>, <a href="#K.3.6.2">K.3.6.2</a>
- <a href="#7.12.9.7">7.12.9.7</a>, <a href="#7.12.10.1">7.12.10.1</a>, <a href="#7.12.10.2">7.12.10.2</a>, <a href="#7.12.10.3">7.12.10.3</a> environment list, <a href="#7.22.4.6">7.22.4.6</a>, <a href="#K.3.6.2.1">K.3.6.2.1</a>
-dot operator (.), <a href="#6.5.2.3">6.5.2.3</a> environmental considerations, <a href="#5.2">5.2</a>
-double _Complex type, <a href="#6.2.5">6.2.5</a> environmental limits, <a href="#5.2.4">5.2.4</a>, <a href="#7.13.1.1">7.13.1.1</a>, <a href="#7.21.2">7.21.2</a>,
-double _Complex type conversion, <a href="#6.3.1.6">6.3.1.6</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.4.4">7.21.4.4</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.22.2.1">7.22.2.1</a>, <a href="#7.22.4.2">7.22.4.2</a>,
- <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a> <a href="#7.22.4.3">7.22.4.3</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a>
-double _Imaginary type, <a href="#G.2">G.2</a> EOF macro, <a href="#7.4">7.4</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.1">7.21.5.1</a>, <a href="#7.21.5.2">7.21.5.2</a>,
-double type, <a href="#6.2.5">6.2.5</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.21.6.7">7.21.6.7</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#7.21.6.11">7.21.6.11</a>,
- <a href="#7.28.2.2">7.28.2.2</a>, <a href="#F.2">F.2</a> <a href="#7.21.6.14">7.21.6.14</a>, <a href="#7.21.7.1">7.21.7.1</a>, <a href="#7.21.7.3">7.21.7.3</a>, <a href="#7.21.7.4">7.21.7.4</a>,
-double type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>, <a href="#6.3.1.7">6.3.1.7</a>, <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.7.6">7.21.7.6</a>, <a href="#7.21.7.8">7.21.7.8</a>, <a href="#7.21.7.9">7.21.7.9</a>,
- <a href="#6.3.1.8">6.3.1.8</a> <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.28.1">7.28.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#7.28.2.4">7.28.2.4</a>,
-double-precision arithmetic, <a href="#5.1.2.3">5.1.2.3</a> <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#7.28.2.12">7.28.2.12</a>,
-double-quote escape sequence (\"), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.28.3.4">7.28.3.4</a>, <a href="#7.28.6.1.1">7.28.6.1.1</a>, <a href="#7.28.6.1.2">7.28.6.1.2</a>, <a href="#K.3.5.3.7">K.3.5.3.7</a>,
- <a href="#6.4.5">6.4.5</a>, <a href="#6.10.9">6.10.9</a> <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>,
-double_t type, <a href="#7.12">7.12</a>, <a href="#J.5.6">J.5.6</a> <a href="#K.3.9.1.5">K.3.9.1.5</a>, <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>,
- <a href="#K.3.9.1.14">K.3.9.1.14</a>
-EDOM macro, <a href="#7.5">7.5</a>, <a href="#7.12.1">7.12.1</a>, see also domain error equal-sign punctuator (=), <a href="#6.7">6.7</a>, <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.9">6.7.9</a>
-effective type, <a href="#6.5">6.5</a> equal-to operator, see equality operator
-EILSEQ macro, <a href="#7.5">7.5</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.27.1.1">7.27.1.1</a>, <a href="#7.27.1.2">7.27.1.2</a>, equality expressions, <a href="#6.5.9">6.5.9</a>
- <a href="#7.27.1.3">7.27.1.3</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.3.1">7.28.3.1</a>, <a href="#7.28.3.3">7.28.3.3</a>, equality operator (==), <a href="#6.5.9">6.5.9</a>
- <a href="#7.28.6.3.2">7.28.6.3.2</a>, <a href="#7.28.6.3.3">7.28.6.3.3</a>, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>, ERANGE macro, <a href="#7.5">7.5</a>, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.12.1">7.12.1</a>,
- see also encoding error <a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>, see
-element type, <a href="#6.2.5">6.2.5</a> also range error, pole error
-
-[<a name="p660" href="#p660">page 660</a>] (<a href="#Contents">Contents</a>)
-
-erf functions, <a href="#7.12.8.1">7.12.8.1</a>, <a href="#F.10.5.1">F.10.5.1</a> exp2 functions, <a href="#7.12.6.2">7.12.6.2</a>, <a href="#F.10.3.2">F.10.3.2</a>
-erf type-generic macro, <a href="#7.24">7.24</a> exp2 type-generic macro, <a href="#7.24">7.24</a>
-erfc functions, <a href="#7.12.8.2">7.12.8.2</a>, <a href="#F.10.5.2">F.10.5.2</a> explicit conversion, <a href="#6.3">6.3</a>
-erfc type-generic macro, <a href="#7.24">7.24</a> expm1 functions, <a href="#7.12.6.3">7.12.6.3</a>, <a href="#F.10.3.3">F.10.3.3</a>
-errno macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.3.2">7.3.2</a>, <a href="#7.5">7.5</a>, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, expm1 type-generic macro, <a href="#7.24">7.24</a>
- <a href="#7.12.1">7.12.1</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.9.3">7.21.9.3</a>, <a href="#7.21.10.4">7.21.10.4</a>, exponent part, <a href="#6.4.4.2">6.4.4.2</a>
- <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.23.6.2">7.23.6.2</a>, <a href="#7.27.1.1">7.27.1.1</a>, exponential functions
- <a href="#7.27.1.2">7.27.1.2</a>, <a href="#7.27.1.3">7.27.1.3</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.3.1">7.28.3.1</a>, complex, <a href="#7.3.7">7.3.7</a>, <a href="#G.6.3">G.6.3</a>
- <a href="#7.28.3.3">7.28.3.3</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>, <a href="#7.28.6.3.2">7.28.6.3.2</a>, real, <a href="#7.12.6">7.12.6</a>, <a href="#F.10.3">F.10.3</a>
- <a href="#7.28.6.3.3">7.28.6.3.3</a>, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>, <a href="#J.5.17">J.5.17</a>, expression, <a href="#6.5">6.5</a>
- <a href="#K.3.1.3">K.3.1.3</a>, <a href="#K.3.7.4.2">K.3.7.4.2</a> assignment, <a href="#6.5.16">6.5.16</a>
-errno.h header, <a href="#7.5">7.5</a>, <a href="#7.30.3">7.30.3</a>, <a href="#K.3.2">K.3.2</a> cast, <a href="#6.5.4">6.5.4</a>
-errno_t type, <a href="#K.3.2">K.3.2</a>, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.6">K.3.6</a>, <a href="#K.3.6.1.1">K.3.6.1.1</a>, constant, <a href="#6.6">6.6</a>
- <a href="#K.3.7">K.3.7</a>, <a href="#K.3.8">K.3.8</a>, <a href="#K.3.9">K.3.9</a> evaluation, <a href="#5.1.2.3">5.1.2.3</a>
-error full, <a href="#6.8">6.8</a>
- domain, see domain error order of evaluation, see order of evaluation
- encoding, see encoding error parenthesized, <a href="#6.5.1">6.5.1</a>
- pole, see pole error primary, <a href="#6.5.1">6.5.1</a>
- range, see range error unary, <a href="#6.5.3">6.5.3</a>
-error conditions, <a href="#7.12.1">7.12.1</a> expression statement, <a href="#6.8.3">6.8.3</a>
-error functions, <a href="#7.12.8">7.12.8</a>, <a href="#F.10.5">F.10.5</a> extended alignment, <a href="#6.2.8">6.2.8</a>
-error indicator, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.1">7.21.7.1</a>, extended character set, <a href="#3.7.2">3.7.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#5.2.1.2">5.2.1.2</a>
- <a href="#7.21.7.3">7.21.7.3</a>, <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.7.6">7.21.7.6</a>, <a href="#7.21.7.7">7.21.7.7</a>, extended characters, <a href="#5.2.1">5.2.1</a>
- <a href="#7.21.7.8">7.21.7.8</a>, <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.21.10.1">7.21.10.1</a>, <a href="#7.21.10.3">7.21.10.3</a>, extended integer types, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.4.4.1">6.4.4.1</a>,
- <a href="#7.28.3.1">7.28.3.1</a>, <a href="#7.28.3.3">7.28.3.3</a> <a href="#7.20">7.20</a>
-error preprocessing directive, <a href="#4">4</a>, <a href="#6.10.5">6.10.5</a> extended multibyte/wide character conversion
-error-handling functions, <a href="#7.21.10">7.21.10</a>, <a href="#7.23.6.2">7.23.6.2</a>, utilities, <a href="#7.28.6">7.28.6</a>, <a href="#K.3.9.3">K.3.9.3</a>
- <a href="#K.3.7.4.2">K.3.7.4.2</a>, <a href="#K.3.7.4.3">K.3.7.4.3</a> extensible wide character case mapping functions,
-escape character (\), <a href="#6.4.4.4">6.4.4.4</a> <a href="#7.29.3.2">7.29.3.2</a>
-escape sequences, <a href="#5.2.1">5.2.1</a>, <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.11.4">6.11.4</a> extensible wide character classification functions,
-evaluation format, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#7.12">7.12</a> <a href="#7.29.2.2">7.29.2.2</a>
-evaluation method, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.5">6.5</a>, <a href="#F.8.5">F.8.5</a> extern storage-class specifier, <a href="#6.2.2">6.2.2</a>, <a href="#6.7.1">6.7.1</a>
-evaluation of expression, <a href="#5.1.2.3">5.1.2.3</a> external definition, <a href="#6.9">6.9</a>
-evaluation order, see order of evaluation external identifiers, underscore, <a href="#7.1.3">7.1.3</a>
-exceptional condition, <a href="#6.5">6.5</a> external linkage, <a href="#6.2.2">6.2.2</a>
-excess precision, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.8.6.4">6.8.6.4</a> external name, <a href="#6.4.2.1">6.4.2.1</a>
-excess range, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.8.6.4">6.8.6.4</a> external object definitions, <a href="#6.9.2">6.9.2</a>
-exclusive OR operators
- bitwise (^), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.11">6.5.11</a> fabs functions, <a href="#7.12.7.2">7.12.7.2</a>, <a href="#F.3">F.3</a>, <a href="#F.10.4.2">F.10.4.2</a>
- bitwise assignment (^=), <a href="#6.5.16.2">6.5.16.2</a> fabs type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
-executable program, <a href="#5.1.1.1">5.1.1.1</a> false macro, <a href="#7.18">7.18</a>
-execution character set, <a href="#5.2.1">5.2.1</a> fclose function, <a href="#7.21.5.1">7.21.5.1</a>
-execution environment, <a href="#5">5</a>, <a href="#5.1.2">5.1.2</a>, see also fdim functions, <a href="#7.12.12.1">7.12.12.1</a>, <a href="#F.10.9.1">F.10.9.1</a>
- environmental limits fdim type-generic macro, <a href="#7.24">7.24</a>
-execution sequence, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.8">6.8</a> FE_ALL_EXCEPT macro, <a href="#7.6">7.6</a>
-exit function, <a href="#5.1.2.2.3">5.1.2.2.3</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.22">7.22</a>, <a href="#7.22.4.4">7.22.4.4</a>, FE_DFL_ENV macro, <a href="#7.6">7.6</a>
- <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a> FE_DIVBYZERO macro, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a>
-EXIT_FAILURE macro, <a href="#7.22">7.22</a>, <a href="#7.22.4.4">7.22.4.4</a> FE_DOWNWARD macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a>
-EXIT_SUCCESS macro, <a href="#7.22">7.22</a>, <a href="#7.22.4.4">7.22.4.4</a> FE_INEXACT macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a>
-exp functions, <a href="#7.12.6.1">7.12.6.1</a>, <a href="#F.10.3.1">F.10.3.1</a> FE_INVALID macro, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a>
-exp type-generic macro, <a href="#7.24">7.24</a> FE_OVERFLOW macro, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a>
-
-[<a name="p661" href="#p661">page 661</a>] (<a href="#Contents">Contents</a>)
-
-FE_TONEAREST macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> float _Complex type conversion, <a href="#6.3.1.6">6.3.1.6</a>,
-FE_TOWARDZERO macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a>
-FE_UNDERFLOW macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> float _Imaginary type, <a href="#G.2">G.2</a>
-FE_UPWARD macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> float type, <a href="#6.2.5">6.2.5</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.7.2">6.7.2</a>, <a href="#F.2">F.2</a>
-feclearexcept function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.1">7.6.2.1</a>, <a href="#F.3">F.3</a> float type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>, <a href="#6.3.1.7">6.3.1.7</a>,
-fegetenv function, <a href="#7.6.4.1">7.6.4.1</a>, <a href="#7.6.4.3">7.6.4.3</a>, <a href="#7.6.4.4">7.6.4.4</a>, <a href="#F.3">F.3</a> <a href="#6.3.1.8">6.3.1.8</a>
-fegetexceptflag function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.2">7.6.2.2</a>, <a href="#F.3">F.3</a> float.h header, <a href="#4">4</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.7">7.7</a>, <a href="#7.22.1.3">7.22.1.3</a>,
-fegetround function, <a href="#7.6">7.6</a>, <a href="#7.6.3.1">7.6.3.1</a>, <a href="#F.3">F.3</a> <a href="#7.28.4.1.1">7.28.4.1.1</a>
-feholdexcept function, <a href="#7.6.4.2">7.6.4.2</a>, <a href="#7.6.4.3">7.6.4.3</a>, float_t type, <a href="#7.12">7.12</a>, <a href="#J.5.6">J.5.6</a>
- <a href="#7.6.4.4">7.6.4.4</a>, <a href="#F.3">F.3</a> floating constant, <a href="#6.4.4.2">6.4.4.2</a>
-fence, <a href="#5.1.2.4">5.1.2.4</a> floating suffix, f or <a href="#F">F</a>, <a href="#6.4.4.2">6.4.4.2</a>
-fences, <a href="#7.17.4">7.17.4</a> floating type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>, <a href="#6.3.1.7">6.3.1.7</a>,
-fenv.h header, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F">F</a>, <a href="#H">H</a> <a href="#F.3">F.3</a>, <a href="#F.4">F.4</a>
-FENV_ACCESS pragma, <a href="#6.10.6">6.10.6</a>, <a href="#7.6.1">7.6.1</a>, <a href="#F.8">F.8</a>, <a href="#F.9">F.9</a>, floating types, <a href="#6.2.5">6.2.5</a>, <a href="#6.11.1">6.11.1</a>
- <a href="#F.10">F.10</a> floating-point accuracy, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.5">6.5</a>,
-fenv_t type, <a href="#7.6">7.6</a> <a href="#7.22.1.3">7.22.1.3</a>, <a href="#F.5">F.5</a>, see also contracted expression
-feof function, <a href="#7.21.10.2">7.21.10.2</a> floating-point arithmetic functions, <a href="#7.12">7.12</a>, <a href="#F.10">F.10</a>
-feraiseexcept function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.3">7.6.2.3</a>, <a href="#F.3">F.3</a> floating-point classification functions, <a href="#7.12.3">7.12.3</a>
-ferror function, <a href="#7.21.10.3">7.21.10.3</a> floating-point control mode, <a href="#7.6">7.6</a>, <a href="#F.8.6">F.8.6</a>
-fesetenv function, <a href="#7.6.4.3">7.6.4.3</a>, <a href="#F.3">F.3</a> floating-point environment, <a href="#7.6">7.6</a>, <a href="#F.8">F.8</a>, <a href="#F.8.6">F.8.6</a>
-fesetexceptflag function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.4">7.6.2.4</a>, <a href="#F.3">F.3</a> floating-point exception, <a href="#7.6">7.6</a>, <a href="#7.6.2">7.6.2</a>, <a href="#F.10">F.10</a>
-fesetround function, <a href="#7.6">7.6</a>, <a href="#7.6.3.2">7.6.3.2</a>, <a href="#F.3">F.3</a> floating-point number, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.2.5">6.2.5</a>
-fetestexcept function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.5">7.6.2.5</a>, <a href="#F.3">F.3</a> floating-point rounding mode, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-feupdateenv function, <a href="#7.6.4.2">7.6.4.2</a>, <a href="#7.6.4.4">7.6.4.4</a>, <a href="#F.3">F.3</a> floating-point status flag, <a href="#7.6">7.6</a>, <a href="#F.8.6">F.8.6</a>
-fexcept_t type, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> floor functions, <a href="#7.12.9.2">7.12.9.2</a>, <a href="#F.10.6.2">F.10.6.2</a>
-fflush function, <a href="#7.21.5.2">7.21.5.2</a>, <a href="#7.21.5.3">7.21.5.3</a> floor type-generic macro, <a href="#7.24">7.24</a>
-fgetc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.7.1">7.21.7.1</a>, FLT_DECIMAL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.8.1">7.21.8.1</a> FLT_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-fgetpos function, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.9.1">7.21.9.1</a>, <a href="#7.21.9.3">7.21.9.3</a> FLT_EPSILON macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-fgets function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.2">7.21.7.2</a>, <a href="#K.3.5.4.1">K.3.5.4.1</a> FLT_EVAL_METHOD macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.6">6.6</a>, <a href="#7.12">7.12</a>,
-fgetwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.28.3.1">7.28.3.1</a>, <a href="#F.10.11">F.10.11</a>
- <a href="#7.28.3.6">7.28.3.6</a> FLT_HAS_SUBNORM macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-fgetws function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.2">7.28.3.2</a> FLT_MANT_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-field width, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a> FLT_MAX macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-file, <a href="#7.21.3">7.21.3</a> FLT_MAX_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- access functions, <a href="#7.21.5">7.21.5</a>, <a href="#K.3.5.2">K.3.5.2</a> FLT_MAX_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- name, <a href="#7.21.3">7.21.3</a> FLT_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- operations, <a href="#7.21.4">7.21.4</a>, <a href="#K.3.5.1">K.3.5.1</a> FLT_MIN_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- position indicator, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>, FLT_MIN_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.1">7.21.7.1</a>, <a href="#7.21.7.3">7.21.7.3</a>, <a href="#7.21.7.10">7.21.7.10</a>, FLT_RADIX macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.22.1.3">7.22.1.3</a>,
- <a href="#7.21.8.1">7.21.8.1</a>, <a href="#7.21.8.2">7.21.8.2</a>, <a href="#7.21.9.1">7.21.9.1</a>, <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>
- <a href="#7.21.9.3">7.21.9.3</a>, <a href="#7.21.9.4">7.21.9.4</a>, <a href="#7.21.9.5">7.21.9.5</a>, <a href="#7.28.3.1">7.28.3.1</a>, FLT_ROUNDS macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a>
- <a href="#7.28.3.3">7.28.3.3</a>, <a href="#7.28.3.10">7.28.3.10</a> FLT_TRUE_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- positioning functions, <a href="#7.21.9">7.21.9</a> fma functions, <a href="#7.12">7.12</a>, <a href="#7.12.13.1">7.12.13.1</a>, <a href="#F.10.10.1">F.10.10.1</a>
-file scope, <a href="#6.2.1">6.2.1</a>, <a href="#6.9">6.9</a> fma type-generic macro, <a href="#7.24">7.24</a>
-FILE type, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> fmax functions, <a href="#7.12.12.2">7.12.12.2</a>, <a href="#F.10.9.2">F.10.9.2</a>
-FILENAME_MAX macro, <a href="#7.21.1">7.21.1</a> fmax type-generic macro, <a href="#7.24">7.24</a>
-flags, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a>, see also floating-point fmin functions, <a href="#7.12.12.3">7.12.12.3</a>, <a href="#F.10.9.3">F.10.9.3</a>
- status flag fmin type-generic macro, <a href="#7.24">7.24</a>
-flexible array member, <a href="#6.7.2.1">6.7.2.1</a> fmod functions, <a href="#7.12.10.1">7.12.10.1</a>, <a href="#F.10.7.1">F.10.7.1</a>
-float _Complex type, <a href="#6.2.5">6.2.5</a> fmod type-generic macro, <a href="#7.24">7.24</a>
-
-[<a name="p662" href="#p662">page 662</a>] (<a href="#Contents">Contents</a>)
-
-fopen function, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.5.4">7.21.5.4</a>, <a href="#K.3.5.2.1">K.3.5.2.1</a> <a href="#K.3.5.3.7">K.3.5.3.7</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>
-FOPEN_MAX macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.4.3">7.21.4.3</a>, fseek function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.10">7.21.7.10</a>,
- <a href="#K.3.5.1.1">K.3.5.1.1</a> <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.21.9.4">7.21.9.4</a>, <a href="#7.21.9.5">7.21.9.5</a>, <a href="#7.28.3.10">7.28.3.10</a>
-fopen_s function, <a href="#K.3.5.1.1">K.3.5.1.1</a>, <a href="#K.3.5.2.1">K.3.5.2.1</a>, fsetpos function, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.10">7.21.7.10</a>,
- <a href="#K.3.5.2.2">K.3.5.2.2</a> <a href="#7.21.9.1">7.21.9.1</a>, <a href="#7.21.9.3">7.21.9.3</a>, <a href="#7.28.3.10">7.28.3.10</a>
-for statement, <a href="#6.8.5">6.8.5</a>, <a href="#6.8.5.3">6.8.5.3</a> ftell function, <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.21.9.4">7.21.9.4</a>
-form-feed character, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a> full declarator, <a href="#6.7.6">6.7.6</a>
-form-feed escape sequence (\f), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, full expression, <a href="#6.8">6.8</a>
- <a href="#7.4.1.10">7.4.1.10</a> fully buffered stream, <a href="#7.21.3">7.21.3</a>
-formal argument (deprecated), <a href="#3.16">3.16</a> function
-formal parameter, <a href="#3.16">3.16</a> argument, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.9.1">6.9.1</a>
-formatted input/output functions, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.21.6">7.21.6</a>, body, <a href="#6.9.1">6.9.1</a>
- <a href="#K.3.5.3">K.3.5.3</a> call, <a href="#6.5.2.2">6.5.2.2</a>
- wide character, <a href="#7.28.2">7.28.2</a>, <a href="#K.3.9.1">K.3.9.1</a> library, <a href="#7.1.4">7.1.4</a>
-fortran keyword, <a href="#J.5.9">J.5.9</a> declarator, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.11.6">6.11.6</a>
-forward reference, <a href="#3.11">3.11</a> definition, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.9.1">6.9.1</a>, <a href="#6.11.7">6.11.7</a>
-FP_CONTRACT pragma, <a href="#6.5">6.5</a>, <a href="#6.10.6">6.10.6</a>, <a href="#7.12.2">7.12.2</a>, see designator, <a href="#6.3.2.1">6.3.2.1</a>
- also contracted expression image, <a href="#5.2.3">5.2.3</a>
-FP_FAST_FMA macro, <a href="#7.12">7.12</a> inline, <a href="#6.7.4">6.7.4</a>
-FP_FAST_FMAF macro, <a href="#7.12">7.12</a> library, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#7.1.4">7.1.4</a>
-FP_FAST_FMAL macro, <a href="#7.12">7.12</a> name length, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.11.3">6.11.3</a>
-FP_ILOGB0 macro, <a href="#7.12">7.12</a>, <a href="#7.12.6.5">7.12.6.5</a> no-return, <a href="#6.7.4">6.7.4</a>
-FP_ILOGBNAN macro, <a href="#7.12">7.12</a>, <a href="#7.12.6.5">7.12.6.5</a> parameter, <a href="#5.1.2.2.1">5.1.2.2.1</a>, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7">6.7</a>, <a href="#6.9.1">6.9.1</a>
-FP_INFINITE macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> prototype, <a href="#5.1.2.2.1">5.1.2.2.1</a>, <a href="#6.2.1">6.2.1</a>, <a href="#6.2.7">6.2.7</a>, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7">6.7</a>,
-FP_NAN macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.9.1">6.9.1</a>, <a href="#6.11.6">6.11.6</a>, <a href="#6.11.7">6.11.7</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.12">7.12</a>
-FP_NORMAL macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> prototype scope, <a href="#6.2.1">6.2.1</a>, <a href="#6.7.6.2">6.7.6.2</a>
-FP_SUBNORMAL macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> recursive call, <a href="#6.5.2.2">6.5.2.2</a>
-FP_ZERO macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> return, <a href="#6.8.6.4">6.8.6.4</a>, <a href="#F.6">F.6</a>
-fpclassify macro, <a href="#7.12.3.1">7.12.3.1</a>, <a href="#F.3">F.3</a> scope, <a href="#6.2.1">6.2.1</a>
-fpos_t type, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a> type, <a href="#6.2.5">6.2.5</a>
-fprintf function, <a href="#7.8.1">7.8.1</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.1">7.21.6.1</a>, type conversion, <a href="#6.3.2.1">6.3.2.1</a>
- <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.21.6.3">7.21.6.3</a>, <a href="#7.21.6.5">7.21.6.5</a>, <a href="#7.21.6.6">7.21.6.6</a>, function specifiers, <a href="#6.7.4">6.7.4</a>
- <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#F.3">F.3</a>, <a href="#K.3.5.3.1">K.3.5.3.1</a> function type, <a href="#6.2.5">6.2.5</a>
-fprintf_s function, <a href="#K.3.5.3.1">K.3.5.3.1</a> function-call operator (( )), <a href="#6.5.2.2">6.5.2.2</a>
-fputc function, <a href="#5.2.2">5.2.2</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.7.3">7.21.7.3</a>, function-like macro, <a href="#6.10.3">6.10.3</a>
- <a href="#7.21.7.7">7.21.7.7</a>, <a href="#7.21.8.2">7.21.8.2</a> fundamental alignment, <a href="#6.2.8">6.2.8</a>
-fputs function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.4">7.21.7.4</a> future directions
-fputwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.28.3.3">7.28.3.3</a>, language, <a href="#6.11">6.11</a>
- <a href="#7.28.3.8">7.28.3.8</a> library, <a href="#7.30">7.30</a>
-fputws function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.4">7.28.3.4</a> fwide function, <a href="#7.21.2">7.21.2</a>, <a href="#7.28.3.5">7.28.3.5</a>
-fread function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.8.1">7.21.8.1</a> fwprintf function, <a href="#7.8.1">7.8.1</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.2">7.21.6.2</a>,
-free function, <a href="#7.22.3.3">7.22.3.3</a>, <a href="#7.22.3.5">7.22.3.5</a> <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#7.28.2.3">7.28.2.3</a>, <a href="#7.28.2.5">7.28.2.5</a>,
-freestanding execution environment, <a href="#4">4</a>, <a href="#5.1.2">5.1.2</a>, <a href="#7.28.2.11">7.28.2.11</a>, <a href="#K.3.9.1.1">K.3.9.1.1</a>
- <a href="#5.1.2.1">5.1.2.1</a> fwprintf_s function, <a href="#K.3.9.1.1">K.3.9.1.1</a>
-freopen function, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.5.4">7.21.5.4</a> fwrite function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.8.2">7.21.8.2</a>
-freopen_s function, <a href="#K.3.5.2.2">K.3.5.2.2</a> fwscanf function, <a href="#7.8.1">7.8.1</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.2">7.28.2.2</a>,
-frexp functions, <a href="#7.12.6.4">7.12.6.4</a>, <a href="#F.10.3.4">F.10.3.4</a> <a href="#7.28.2.4">7.28.2.4</a>, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.12">7.28.2.12</a>, <a href="#7.28.3.10">7.28.3.10</a>,
-frexp type-generic macro, <a href="#7.24">7.24</a> <a href="#K.3.9.1.2">K.3.9.1.2</a>
-fscanf function, <a href="#7.8.1">7.8.1</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, fwscanf_s function, <a href="#K.3.9.1.2">K.3.9.1.2</a>, <a href="#K.3.9.1.5">K.3.9.1.5</a>,
- <a href="#7.21.6.4">7.21.6.4</a>, <a href="#7.21.6.7">7.21.6.7</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#F.3">F.3</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a> <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.14">K.3.9.1.14</a>
-fscanf_s function, <a href="#K.3.5.3.2">K.3.5.3.2</a>, <a href="#K.3.5.3.4">K.3.5.3.4</a>,
-
-[<a name="p663" href="#p663">page 663</a>] (<a href="#Contents">Contents</a>)
-
-gamma functions, <a href="#7.12.8">7.12.8</a>, <a href="#F.10.5">F.10.5</a> name spaces, <a href="#6.2.3">6.2.3</a>
-general utilities, <a href="#7.22">7.22</a>, <a href="#K.3.6">K.3.6</a> reserved, <a href="#6.4.1">6.4.1</a>, <a href="#7.1.3">7.1.3</a>, <a href="#K.3.1.2">K.3.1.2</a>
- wide string, <a href="#7.28.4">7.28.4</a>, <a href="#K.3.9.2">K.3.9.2</a> scope, <a href="#6.2.1">6.2.1</a>
-general wide string utilities, <a href="#7.28.4">7.28.4</a>, <a href="#K.3.9.2">K.3.9.2</a> type, <a href="#6.2.5">6.2.5</a>
-generic parameters, <a href="#7.24">7.24</a> identifier list, <a href="#6.7.6">6.7.6</a>
-generic selection, <a href="#6.5.1.1">6.5.1.1</a> identifier nondigit, <a href="#6.4.2.1">6.4.2.1</a>
-getc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.7.6">7.21.7.6</a> IEC 559, <a href="#F.1">F.1</a>
-getchar function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.6">7.21.7.6</a> IEC 60559, <a href="#2">2</a>, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.3.3">7.3.3</a>,
-getenv function, <a href="#7.22.4.6">7.22.4.6</a> <a href="#7.6">7.6</a>, <a href="#7.6.4.2">7.6.4.2</a>, <a href="#7.12.1">7.12.1</a>, <a href="#7.12.10.2">7.12.10.2</a>, <a href="#7.12.14">7.12.14</a>, <a href="#F">F</a>, <a href="#G">G</a>,
-getenv_s function, <a href="#K.3.6.2.1">K.3.6.2.1</a> <a href="#H.1">H.1</a>
-gets function, <a href="#K.3.5.4.1">K.3.5.4.1</a> IEEE 754, <a href="#F.1">F.1</a>
-gets_s function, <a href="#K.3.5.4.1">K.3.5.4.1</a> IEEE 854, <a href="#F.1">F.1</a>
-getwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.6">7.28.3.6</a>, <a href="#7.28.3.7">7.28.3.7</a> IEEE floating-point arithmetic standard, see
-getwchar function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.7">7.28.3.7</a> IEC 60559, ANSI/IEEE 754,
-gmtime function, <a href="#7.26.3.3">7.26.3.3</a> ANSI/IEEE 854
-gmtime_s function, <a href="#K.3.8.2.3">K.3.8.2.3</a> if preprocessing directive, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>,
-goto statement, <a href="#6.2.1">6.2.1</a>, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.6.1">6.8.6.1</a> <a href="#6.10.1">6.10.1</a>, <a href="#7.1.4">7.1.4</a>
-graphic characters, <a href="#5.2.1">5.2.1</a> if statement, <a href="#6.8.4.1">6.8.4.1</a>
-greater-than operator (>), <a href="#6.5.8">6.5.8</a> ifdef preprocessing directive, <a href="#6.10.1">6.10.1</a>
-greater-than-or-equal-to operator (>=), <a href="#6.5.8">6.5.8</a> ifndef preprocessing directive, <a href="#6.10.1">6.10.1</a>
- ignore_handler_s function, <a href="#K.3.6.1.3">K.3.6.1.3</a>
-happens before, <a href="#5.1.2.4">5.1.2.4</a> ilogb functions, <a href="#7.12">7.12</a>, <a href="#7.12.6.5">7.12.6.5</a>, <a href="#F.10.3.5">F.10.3.5</a>
-header, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#7.1.2">7.1.2</a>, see also standard headers ilogb type-generic macro, <a href="#7.24">7.24</a>
-header names, <a href="#6.4">6.4</a>, <a href="#6.4.7">6.4.7</a>, <a href="#6.10.2">6.10.2</a> imaginary macro, <a href="#7.3.1">7.3.1</a>, <a href="#G.6">G.6</a>
-hexadecimal constant, <a href="#6.4.4.1">6.4.4.1</a> imaginary numbers, <a href="#G">G</a>
-hexadecimal digit, <a href="#6.4.4.1">6.4.4.1</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.4.4.4">6.4.4.4</a> imaginary type domain, <a href="#G.2">G.2</a>
-hexadecimal prefix, <a href="#6.4.4.1">6.4.4.1</a> imaginary types, <a href="#G">G</a>
-hexadecimal-character escape sequence imaxabs function, <a href="#7.8.2.1">7.8.2.1</a>
- (\x hexadecimal digits), <a href="#6.4.4.4">6.4.4.4</a> imaxdiv function, <a href="#7.8">7.8</a>, <a href="#7.8.2.2">7.8.2.2</a>
-high-order bit, <a href="#3.6">3.6</a> imaxdiv_t type, <a href="#7.8">7.8</a>
-horizontal-tab character, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a> implementation, <a href="#3.12">3.12</a>
-horizontal-tab escape sequence (\r), <a href="#7.29.2.1.3">7.29.2.1.3</a> implementation limit, <a href="#3.13">3.13</a>, <a href="#4">4</a>, <a href="#5.2.4.2">5.2.4.2</a>, <a href="#6.4.2.1">6.4.2.1</a>,
-horizontal-tab escape sequence (\t), <a href="#5.2.2">5.2.2</a>, <a href="#6.7.6">6.7.6</a>, <a href="#6.8.4.2">6.8.4.2</a>, <a href="#E">E</a>, see also environmental
- <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.4.1.3">7.4.1.3</a>, <a href="#7.4.1.10">7.4.1.10</a> limits
-hosted execution environment, <a href="#4">4</a>, <a href="#5.1.2">5.1.2</a>, <a href="#5.1.2.2">5.1.2.2</a> implementation-defined behavior, <a href="#3.4.1">3.4.1</a>, <a href="#4">4</a>, <a href="#J.3">J.3</a>
-HUGE_VAL macro, <a href="#7.12">7.12</a>, <a href="#7.12.1">7.12.1</a>, <a href="#7.22.1.3">7.22.1.3</a>, implementation-defined value, <a href="#3.19.1">3.19.1</a>
- <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#F.10">F.10</a> implicit conversion, <a href="#6.3">6.3</a>
-HUGE_VALF macro, <a href="#7.12">7.12</a>, <a href="#7.12.1">7.12.1</a>, <a href="#7.22.1.3">7.22.1.3</a>, implicit initialization, <a href="#6.7.9">6.7.9</a>
- <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#F.10">F.10</a> include preprocessing directive, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.10.2">6.10.2</a>
-HUGE_VALL macro, <a href="#7.12">7.12</a>, <a href="#7.12.1">7.12.1</a>, <a href="#7.22.1.3">7.22.1.3</a>, inclusive OR operators
- <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#F.10">F.10</a> bitwise (|), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.12">6.5.12</a>
-hyperbolic functions bitwise assignment (|=), <a href="#6.5.16.2">6.5.16.2</a>
- complex, <a href="#7.3.6">7.3.6</a>, <a href="#G.6.2">G.6.2</a> incomplete type, <a href="#6.2.5">6.2.5</a>
- real, <a href="#7.12.5">7.12.5</a>, <a href="#F.10.2">F.10.2</a> increment operators, see arithmetic operators,
-hypot functions, <a href="#7.12.7.3">7.12.7.3</a>, <a href="#F.10.4.3">F.10.4.3</a> increment and decrement
-hypot type-generic macro, <a href="#7.24">7.24</a> indeterminate value, <a href="#3.19.2">3.19.2</a>
- indeterminately sequenced, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.5.2.2">6.5.2.2</a>,
-I macro, <a href="#7.3.1">7.3.1</a>, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#G.6">G.6</a> <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.16.2">6.5.16.2</a>, see also sequenced before,
-identifier, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.5.1">6.5.1</a> unsequenced
- linkage, see linkage indirection operator (*), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>
- maximum length, <a href="#6.4.2.1">6.4.2.1</a> inequality operator (!=), <a href="#6.5.9">6.5.9</a>
-
-[<a name="p664" href="#p664">page 664</a>] (<a href="#Contents">Contents</a>)
-
-infinitary, <a href="#7.12.1">7.12.1</a> extended, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.4.4.1">6.4.4.1</a>, <a href="#7.20">7.20</a>
-INFINITY macro, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#7.12">7.12</a>, <a href="#F.2.1">F.2.1</a> inter-thread happens before, <a href="#5.1.2.4">5.1.2.4</a>
-initial position, <a href="#5.2.2">5.2.2</a> interactive device, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.5.3">7.21.5.3</a>
-initial shift state, <a href="#5.2.1.2">5.2.1.2</a> internal linkage, <a href="#6.2.2">6.2.2</a>
-initialization, <a href="#5.1.2">5.1.2</a>, <a href="#6.2.4">6.2.4</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.5">6.5.2.5</a>, <a href="#6.7.9">6.7.9</a>, internal name, <a href="#6.4.2.1">6.4.2.1</a>
- <a href="#F.8.5">F.8.5</a> interrupt, <a href="#5.2.3">5.2.3</a>
- in blocks, <a href="#6.8">6.8</a> INTMAX_C macro, <a href="#7.20.4.2">7.20.4.2</a>
-initializer, <a href="#6.7.9">6.7.9</a> INTMAX_MAX macro, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.20.2.5">7.20.2.5</a>
- permitted form, <a href="#6.6">6.6</a> INTMAX_MIN macro, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.20.2.5">7.20.2.5</a>
- string literal, <a href="#6.3.2.1">6.3.2.1</a> intmax_t type, <a href="#7.20.1.5">7.20.1.5</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>,
-inline, <a href="#6.7.4">6.7.4</a> <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
-inner scope, <a href="#6.2.1">6.2.1</a> INTN_C macros, <a href="#7.20.4.1">7.20.4.1</a>
-input failure, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.10">7.28.2.10</a>, INTN_MAX macros, <a href="#7.20.2.1">7.20.2.1</a>
- <a href="#K.3.5.3.2">K.3.5.3.2</a>, <a href="#K.3.5.3.4">K.3.5.3.4</a>, <a href="#K.3.5.3.7">K.3.5.3.7</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>, INTN_MIN macros, <a href="#7.20.2.1">7.20.2.1</a>
- <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>, <a href="#K.3.9.1.5">K.3.9.1.5</a>, intN_t types, <a href="#7.20.1.1">7.20.1.1</a>
- <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>, <a href="#K.3.9.1.14">K.3.9.1.14</a> INTPTR_MAX macro, <a href="#7.20.2.4">7.20.2.4</a>
-input/output functions INTPTR_MIN macro, <a href="#7.20.2.4">7.20.2.4</a>
- character, <a href="#7.21.7">7.21.7</a>, <a href="#K.3.5.4">K.3.5.4</a> intptr_t type, <a href="#7.20.1.4">7.20.1.4</a>
- direct, <a href="#7.21.8">7.21.8</a> inttypes.h header, <a href="#7.8">7.8</a>, <a href="#7.30.4">7.30.4</a>
- formatted, <a href="#7.21.6">7.21.6</a>, <a href="#K.3.5.3">K.3.5.3</a> isalnum function, <a href="#7.4.1.1">7.4.1.1</a>, <a href="#7.4.1.9">7.4.1.9</a>, <a href="#7.4.1.10">7.4.1.10</a>
- wide character, <a href="#7.28.2">7.28.2</a>, <a href="#K.3.9.1">K.3.9.1</a> isalpha function, <a href="#7.4.1.1">7.4.1.1</a>, <a href="#7.4.1.2">7.4.1.2</a>
- wide character, <a href="#7.28.3">7.28.3</a> isblank function, <a href="#7.4.1.3">7.4.1.3</a>
- formatted, <a href="#7.28.2">7.28.2</a>, <a href="#K.3.9.1">K.3.9.1</a> iscntrl function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.4">7.4.1.4</a>, <a href="#7.4.1.7">7.4.1.7</a>,
-input/output header, <a href="#7.21">7.21</a>, <a href="#K.3.5">K.3.5</a> <a href="#7.4.1.11">7.4.1.11</a>
-input/output, device, <a href="#5.1.2.3">5.1.2.3</a> isdigit function, <a href="#7.4.1.1">7.4.1.1</a>, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.5">7.4.1.5</a>,
-int type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.4.4.1">6.4.4.1</a>, <a href="#6.7.2">6.7.2</a> <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.1.11">7.4.1.11</a>, <a href="#7.11.1.1">7.11.1.1</a>
-int type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>, isfinite macro, <a href="#7.12.3.2">7.12.3.2</a>, <a href="#F.3">F.3</a>
- <a href="#6.3.1.8">6.3.1.8</a> isgraph function, <a href="#7.4.1.6">7.4.1.6</a>
-INT_FASTN_MAX macros, <a href="#7.20.2.3">7.20.2.3</a> isgreater macro, <a href="#7.12.14.1">7.12.14.1</a>, <a href="#F.3">F.3</a>
-INT_FASTN_MIN macros, <a href="#7.20.2.3">7.20.2.3</a> isgreaterequal macro, <a href="#7.12.14.2">7.12.14.2</a>, <a href="#F.3">F.3</a>
-int_fastN_t types, <a href="#7.20.1.3">7.20.1.3</a> isinf macro, <a href="#7.12.3.3">7.12.3.3</a>
-INT_LEASTN_MAX macros, <a href="#7.20.2.2">7.20.2.2</a> isless macro, <a href="#7.12.14.3">7.12.14.3</a>, <a href="#F.3">F.3</a>
-INT_LEASTN_MIN macros, <a href="#7.20.2.2">7.20.2.2</a> islessequal macro, <a href="#7.12.14.4">7.12.14.4</a>, <a href="#F.3">F.3</a>
-int_leastN_t types, <a href="#7.20.1.2">7.20.1.2</a> islessgreater macro, <a href="#7.12.14.5">7.12.14.5</a>, <a href="#F.3">F.3</a>
-INT_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.12">7.12</a>, <a href="#7.12.6.5">7.12.6.5</a> islower function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.2.1">7.4.2.1</a>,
-INT_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.12">7.12</a> <a href="#7.4.2.2">7.4.2.2</a>
-integer arithmetic functions, <a href="#7.8.2.1">7.8.2.1</a>, <a href="#7.8.2.2">7.8.2.2</a>, isnan macro, <a href="#7.12.3.4">7.12.3.4</a>, <a href="#F.3">F.3</a>
- <a href="#7.22.6">7.22.6</a> isnormal macro, <a href="#7.12.3.5">7.12.3.5</a>
-integer character constant, <a href="#6.4.4.4">6.4.4.4</a> ISO 31-11, <a href="#2">2</a>, <a href="#3">3</a>
-integer constant, <a href="#6.4.4.1">6.4.4.1</a> ISO 4217, <a href="#2">2</a>, <a href="#7.11.2.1">7.11.2.1</a>
-integer constant expression, <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.6">6.6</a>, <a href="#6.7.2.1">6.7.2.1</a>, ISO 8601, <a href="#2">2</a>, <a href="#7.26.3.5">7.26.3.5</a>
- <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.7.9">6.7.9</a>, <a href="#6.7.10">6.7.10</a>, <a href="#6.8.4.2">6.8.4.2</a>, <a href="#6.10.1">6.10.1</a>, ISO/IEC 10646, <a href="#2">2</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.4.3">6.4.3</a>, <a href="#6.10.8.2">6.10.8.2</a>
- <a href="#7.1.4">7.1.4</a> ISO/IEC 10976-1, <a href="#H.1">H.1</a>
-integer conversion rank, <a href="#6.3.1.1">6.3.1.1</a> ISO/IEC 2382-1, <a href="#2">2</a>, <a href="#3">3</a>
-integer promotions, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.3.1.1">6.3.1.1</a>, ISO/IEC 646, <a href="#2">2</a>, <a href="#5.2.1.1">5.2.1.1</a>
- <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.5.3.3">6.5.3.3</a>, <a href="#6.5.7">6.5.7</a>, <a href="#6.8.4.2">6.8.4.2</a>, <a href="#7.20.2">7.20.2</a>, <a href="#7.20.3">7.20.3</a>, ISO/IEC 9945-2, <a href="#7.11">7.11</a>
- <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a> iso646.h header, <a href="#4">4</a>, <a href="#7.9">7.9</a> *
-integer suffix, <a href="#6.4.4.1">6.4.4.1</a> isprint function, <a href="#5.2.2">5.2.2</a>, <a href="#7.4.1.8">7.4.1.8</a>
-integer type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>, ispunct function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.1.9">7.4.1.9</a>,
- <a href="#F.3">F.3</a>, <a href="#F.4">F.4</a> <a href="#7.4.1.11">7.4.1.11</a>
-integer types, <a href="#6.2.5">6.2.5</a>, <a href="#7.20">7.20</a> isspace function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.1.9">7.4.1.9</a>,
-
-[<a name="p665" href="#p665">page 665</a>] (<a href="#Contents">Contents</a>)
-
- <a href="#7.4.1.10">7.4.1.10</a>, <a href="#7.4.1.11">7.4.1.11</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.3">7.22.1.3</a>, LC_ALL macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
- <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.2.2">7.28.2.2</a> LC_COLLATE macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.23.4.3">7.23.4.3</a>,
-isunordered macro, <a href="#7.12.14.6">7.12.14.6</a>, <a href="#F.3">F.3</a> <a href="#7.28.4.4.2">7.28.4.4.2</a>
-isupper function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.11">7.4.1.11</a>, <a href="#7.4.2.1">7.4.2.1</a>, LC_CTYPE macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.22">7.22</a>, <a href="#7.22.7">7.22.7</a>,
- <a href="#7.4.2.2">7.4.2.2</a> <a href="#7.22.8">7.22.8</a>, <a href="#7.28.6">7.28.6</a>, <a href="#7.29.1">7.29.1</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.2.2.2">7.29.2.2.2</a>,
-iswalnum function, <a href="#7.29.2.1.1">7.29.2.1.1</a>, <a href="#7.29.2.1.9">7.29.2.1.9</a>, <a href="#7.29.3.2.1">7.29.3.2.1</a>, <a href="#7.29.3.2.2">7.29.3.2.2</a>, <a href="#K.3.6.4">K.3.6.4</a>, <a href="#K.3.6.5">K.3.6.5</a>
- <a href="#7.29.2.1.10">7.29.2.1.10</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> LC_MONETARY macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
-iswalpha function, <a href="#7.29.2.1.1">7.29.2.1.1</a>, <a href="#7.29.2.1.2">7.29.2.1.2</a>, LC_NUMERIC macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
- <a href="#7.29.2.2.1">7.29.2.2.1</a> LC_TIME macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.26.3.5">7.26.3.5</a>
-iswblank function, <a href="#7.29.2.1.3">7.29.2.1.3</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> lconv structure type, <a href="#7.11">7.11</a>
-iswcntrl function, <a href="#7.29.2.1.2">7.29.2.1.2</a>, <a href="#7.29.2.1.4">7.29.2.1.4</a>, LDBL_DECIMAL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.29.2.1.7">7.29.2.1.7</a>, <a href="#7.29.2.1.11">7.29.2.1.11</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> LDBL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-iswctype function, <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.2.2.2">7.29.2.2.2</a> LDBL_EPSILON macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-iswdigit function, <a href="#7.29.2.1.1">7.29.2.1.1</a>, <a href="#7.29.2.1.2">7.29.2.1.2</a>, LDBL_HAS_SUBNORM macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.29.2.1.5">7.29.2.1.5</a>, <a href="#7.29.2.1.7">7.29.2.1.7</a>, <a href="#7.29.2.1.11">7.29.2.1.11</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> LDBL_MANT_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-iswgraph function, <a href="#7.29.2.1">7.29.2.1</a>, <a href="#7.29.2.1.6">7.29.2.1.6</a>, LDBL_MAX macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.29.2.1.10">7.29.2.1.10</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> LDBL_MAX_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-iswlower function, <a href="#7.29.2.1.2">7.29.2.1.2</a>, <a href="#7.29.2.1.7">7.29.2.1.7</a>, LDBL_MAX_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.3.1.1">7.29.3.1.1</a>, <a href="#7.29.3.1.2">7.29.3.1.2</a> LDBL_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-iswprint function, <a href="#7.29.2.1.6">7.29.2.1.6</a>, <a href="#7.29.2.1.8">7.29.2.1.8</a>, LDBL_MIN_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.29.2.2.1">7.29.2.2.1</a> LDBL_MIN_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-iswpunct function, <a href="#7.29.2.1">7.29.2.1</a>, <a href="#7.29.2.1.2">7.29.2.1.2</a>, LDBL_TRUE_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#7.29.2.1.7">7.29.2.1.7</a>, <a href="#7.29.2.1.9">7.29.2.1.9</a>, <a href="#7.29.2.1.10">7.29.2.1.10</a>, ldexp functions, <a href="#7.12.6.6">7.12.6.6</a>, <a href="#F.10.3.6">F.10.3.6</a>
- <a href="#7.29.2.1.11">7.29.2.1.11</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> ldexp type-generic macro, <a href="#7.24">7.24</a>
-iswspace function, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>, ldiv function, <a href="#7.22.6.2">7.22.6.2</a>
- <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>, <a href="#7.29.2.1.2">7.29.2.1.2</a>, <a href="#7.29.2.1.6">7.29.2.1.6</a>, ldiv_t type, <a href="#7.22">7.22</a>
- <a href="#7.29.2.1.7">7.29.2.1.7</a>, <a href="#7.29.2.1.9">7.29.2.1.9</a>, <a href="#7.29.2.1.10">7.29.2.1.10</a>, leading underscore in identifiers, <a href="#7.1.3">7.1.3</a>
- <a href="#7.29.2.1.11">7.29.2.1.11</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> left-shift assignment operator (<<=), <a href="#6.5.16.2">6.5.16.2</a>
-iswupper function, <a href="#7.29.2.1.2">7.29.2.1.2</a>, <a href="#7.29.2.1.11">7.29.2.1.11</a>, left-shift operator (<<), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
- <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.3.1.1">7.29.3.1.1</a>, <a href="#7.29.3.1.2">7.29.3.1.2</a> length
-iswxdigit function, <a href="#7.29.2.1.12">7.29.2.1.12</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> external name, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.11.3">6.11.3</a>
-isxdigit function, <a href="#7.4.1.12">7.4.1.12</a>, <a href="#7.11.1.1">7.11.1.1</a> function name, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.11.3">6.11.3</a>
-italic type convention, <a href="#3">3</a>, <a href="#6.1">6.1</a> identifier, <a href="#6.4.2.1">6.4.2.1</a>
-iteration statements, <a href="#6.8.5">6.8.5</a> internal name, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>
- length function, <a href="#7.22.7.1">7.22.7.1</a>, <a href="#7.23.6.3">7.23.6.3</a>, <a href="#7.28.4.6.1">7.28.4.6.1</a>,
-jmp_buf type, <a href="#7.13">7.13</a> <a href="#7.28.6.3.1">7.28.6.3.1</a>, <a href="#K.3.7.4.4">K.3.7.4.4</a>, <a href="#K.3.9.2.4.1">K.3.9.2.4.1</a>
-jump statements, <a href="#6.8.6">6.8.6</a> length modifier, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>,
- <a href="#7.28.2.2">7.28.2.2</a>
-keywords, <a href="#6.4.1">6.4.1</a>, <a href="#G.2">G.2</a>, <a href="#J.5.9">J.5.9</a>, <a href="#J.5.10">J.5.10</a> less-than operator (<), <a href="#6.5.8">6.5.8</a>
-kill_dependency macro, <a href="#5.1.2.4">5.1.2.4</a>, <a href="#7.17.3.1">7.17.3.1</a> less-than-or-equal-to operator (<=), <a href="#6.5.8">6.5.8</a>
-known constant size, <a href="#6.2.5">6.2.5</a> letter, <a href="#5.2.1">5.2.1</a>, <a href="#7.4">7.4</a>
- lexical elements, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>
-L_tmpnam macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.4.4">7.21.4.4</a> lgamma functions, <a href="#7.12.8.3">7.12.8.3</a>, <a href="#F.10.5.3">F.10.5.3</a>
-L_tmpnam_s macro, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> lgamma type-generic macro, <a href="#7.24">7.24</a>
-label name, <a href="#6.2.1">6.2.1</a>, <a href="#6.2.3">6.2.3</a> library, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#7">7</a>, <a href="#K.3">K.3</a>
-labeled statement, <a href="#6.8.1">6.8.1</a> future directions, <a href="#7.30">7.30</a>
-labs function, <a href="#7.22.6.1">7.22.6.1</a> summary, <a href="#B">B</a>
-language, <a href="#6">6</a> terms, <a href="#7.1.1">7.1.1</a>
- future directions, <a href="#6.11">6.11</a> use of functions, <a href="#7.1.4">7.1.4</a>
- syntax summary, <a href="#A">A</a> lifetime, <a href="#6.2.4">6.2.4</a>
-Latin alphabet, <a href="#5.2.1">5.2.1</a>, <a href="#6.4.2.1">6.4.2.1</a> limits
-
-[<a name="p666" href="#p666">page 666</a>] (<a href="#Contents">Contents</a>)
-
- environmental, see environmental limits <a href="#6.3.1.6">6.3.1.6</a>, <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a>
- implementation, see implementation limits long double _Imaginary type, <a href="#G.2">G.2</a>
- numerical, see numerical limits long double suffix, l or <a href="#L">L</a>, <a href="#6.4.4.2">6.4.4.2</a>
- translation, see translation limits long double type, <a href="#6.2.5">6.2.5</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.7.2">6.7.2</a>,
-limits.h header, <a href="#4">4</a>, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.2.5">6.2.5</a>, <a href="#7.10">7.10</a> <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#F.2">F.2</a>
-line buffered stream, <a href="#7.21.3">7.21.3</a> long double type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>,
-line number, <a href="#6.10.4">6.10.4</a>, <a href="#6.10.8.1">6.10.8.1</a> <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a>
-line preprocessing directive, <a href="#6.10.4">6.10.4</a> long int type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.21.6.1">7.21.6.1</a>,
-lines, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#7.21.2">7.21.2</a> <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
- preprocessing directive, <a href="#6.10">6.10</a> long int type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>,
-linkage, <a href="#6.2.2">6.2.2</a>, <a href="#6.7">6.7</a>, <a href="#6.7.4">6.7.4</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.9">6.9</a>, <a href="#6.9.2">6.9.2</a>, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.8">6.3.1.8</a>
- <a href="#6.11.2">6.11.2</a> long integer suffix, l or <a href="#L">L</a>, <a href="#6.4.4.1">6.4.4.1</a>
-llabs function, <a href="#7.22.6.1">7.22.6.1</a> long long int type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.7.2">6.7.2</a>,
-lldiv function, <a href="#7.22.6.2">7.22.6.2</a> <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
-lldiv_t type, <a href="#7.22">7.22</a> long long int type conversion, <a href="#6.3.1.1">6.3.1.1</a>,
-LLONG_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.8">6.3.1.8</a>
- <a href="#7.28.4.1.2">7.28.4.1.2</a> long long integer suffix, ll or LL, <a href="#6.4.4.1">6.4.4.1</a>
-LLONG_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, LONG_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>
- <a href="#7.28.4.1.2">7.28.4.1.2</a> LONG_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>
-llrint functions, <a href="#7.12.9.5">7.12.9.5</a>, <a href="#F.3">F.3</a>, <a href="#F.10.6.5">F.10.6.5</a> longjmp function, <a href="#7.13.1.1">7.13.1.1</a>, <a href="#7.13.2.1">7.13.2.1</a>, <a href="#7.22.4.4">7.22.4.4</a>,
-llrint type-generic macro, <a href="#7.24">7.24</a> <a href="#7.22.4.7">7.22.4.7</a>
-llround functions, <a href="#7.12.9.7">7.12.9.7</a>, <a href="#F.10.6.7">F.10.6.7</a> loop body, <a href="#6.8.5">6.8.5</a>
-llround type-generic macro, <a href="#7.24">7.24</a> low-order bit, <a href="#3.6">3.6</a>
-local time, <a href="#7.26.1">7.26.1</a> lowercase letter, <a href="#5.2.1">5.2.1</a>
-locale, <a href="#3.4.2">3.4.2</a> lrint functions, <a href="#7.12.9.5">7.12.9.5</a>, <a href="#F.3">F.3</a>, <a href="#F.10.6.5">F.10.6.5</a>
-locale-specific behavior, <a href="#3.4.2">3.4.2</a>, <a href="#J.4">J.4</a> lrint type-generic macro, <a href="#7.24">7.24</a>
-locale.h header, <a href="#7.11">7.11</a>, <a href="#7.30.5">7.30.5</a> lround functions, <a href="#7.12.9.7">7.12.9.7</a>, <a href="#F.10.6.7">F.10.6.7</a>
-localeconv function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a> lround type-generic macro, <a href="#7.24">7.24</a>
-localization, <a href="#7.11">7.11</a> lvalue, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.1">6.5.1</a>, <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.3.1">6.5.3.1</a>, <a href="#6.5.16">6.5.16</a>,
-localtime function, <a href="#7.26.3.4">7.26.3.4</a> <a href="#6.7.2.4">6.7.2.4</a>
-localtime_s function, <a href="#K.3.8.2.4">K.3.8.2.4</a> lvalue conversion, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.16">6.5.16</a>, <a href="#6.5.16.1">6.5.16.1</a>,
-log functions, <a href="#7.12.6.7">7.12.6.7</a>, <a href="#F.10.3.7">F.10.3.7</a> <a href="#6.5.16.2">6.5.16.2</a>
-log type-generic macro, <a href="#7.24">7.24</a>
-log10 functions, <a href="#7.12.6.8">7.12.6.8</a>, <a href="#F.10.3.8">F.10.3.8</a> macro argument substitution, <a href="#6.10.3.1">6.10.3.1</a>
-log10 type-generic macro, <a href="#7.24">7.24</a> macro definition
-log1p functions, <a href="#7.12.6.9">7.12.6.9</a>, <a href="#F.10.3.9">F.10.3.9</a> library function, <a href="#7.1.4">7.1.4</a>
-log1p type-generic macro, <a href="#7.24">7.24</a> macro invocation, <a href="#6.10.3">6.10.3</a>
-log2 functions, <a href="#7.12.6.10">7.12.6.10</a>, <a href="#F.10.3.10">F.10.3.10</a> macro name, <a href="#6.10.3">6.10.3</a>
-log2 type-generic macro, <a href="#7.24">7.24</a> length, <a href="#5.2.4.1">5.2.4.1</a>
-logarithmic functions predefined, <a href="#6.10.8">6.10.8</a>, <a href="#6.11.9">6.11.9</a>
- complex, <a href="#7.3.7">7.3.7</a>, <a href="#G.6.3">G.6.3</a> redefinition, <a href="#6.10.3">6.10.3</a>
- real, <a href="#7.12.6">7.12.6</a>, <a href="#F.10.3">F.10.3</a> scope, <a href="#6.10.3.5">6.10.3.5</a>
-logb functions, <a href="#7.12.6.11">7.12.6.11</a>, <a href="#F.3">F.3</a>, <a href="#F.10.3.11">F.10.3.11</a> macro parameter, <a href="#6.10.3">6.10.3</a>
-logb type-generic macro, <a href="#7.24">7.24</a> macro preprocessor, <a href="#6.10">6.10</a>
-logical operators macro replacement, <a href="#6.10.3">6.10.3</a>
- AND (&&), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.13">6.5.13</a> magnitude, complex, <a href="#7.3.8.1">7.3.8.1</a>
- negation (!), <a href="#6.5.3.3">6.5.3.3</a> main function, <a href="#5.1.2.2.1">5.1.2.2.1</a>, <a href="#5.1.2.2.3">5.1.2.2.3</a>, <a href="#6.7.3.1">6.7.3.1</a>, <a href="#6.7.4">6.7.4</a>,
- OR (||), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.14">6.5.14</a> <a href="#7.21.3">7.21.3</a>
-logical source lines, <a href="#5.1.1.2">5.1.1.2</a> malloc function, <a href="#7.22.3">7.22.3</a>, <a href="#7.22.3.4">7.22.3.4</a>, <a href="#7.22.3.5">7.22.3.5</a>
-long double _Complex type, <a href="#6.2.5">6.2.5</a> manipulation functions
-long double _Complex type conversion, complex, <a href="#7.3.9">7.3.9</a>
-
-[<a name="p667" href="#p667">page 667</a>] (<a href="#Contents">Contents</a>)
-
- real, <a href="#7.12.11">7.12.11</a>, <a href="#F.10.8">F.10.8</a> modf functions, <a href="#7.12.6.12">7.12.6.12</a>, <a href="#F.10.3.12">F.10.3.12</a>
-matching failure, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.10">7.28.2.10</a>, modifiable lvalue, <a href="#6.3.2.1">6.3.2.1</a>
- <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a> modification order, <a href="#5.1.2.4">5.1.2.4</a>
-math.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.5">6.5</a>, <a href="#7.12">7.12</a>, <a href="#7.24">7.24</a>, <a href="#F">F</a>, modulus functions, <a href="#7.12.6.12">7.12.6.12</a>
- <a href="#F.10">F.10</a>, <a href="#J.5.17">J.5.17</a> modulus, complex, <a href="#7.3.8.1">7.3.8.1</a>
-MATH_ERREXCEPT macro, <a href="#7.12">7.12</a>, <a href="#F.10">F.10</a> mtx_destroy function, <a href="#7.25.4.1">7.25.4.1</a>
-math_errhandling macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.12">7.12</a>, <a href="#F.10">F.10</a> mtx_init function, <a href="#7.25.1">7.25.1</a>, <a href="#7.25.4.2">7.25.4.2</a>
-MATH_ERRNO macro, <a href="#7.12">7.12</a> mtx_lock function, <a href="#7.25.4.3">7.25.4.3</a>
-max_align_t type, <a href="#7.19">7.19</a> mtx_t type, <a href="#7.25.1">7.25.1</a>
-maximum functions, <a href="#7.12.12">7.12.12</a>, <a href="#F.10.9">F.10.9</a> mtx_timedlock function, <a href="#7.25.4.4">7.25.4.4</a>
-MB_CUR_MAX macro, <a href="#7.1.1">7.1.1</a>, <a href="#7.22">7.22</a>, <a href="#7.22.7.2">7.22.7.2</a>, mtx_trylock function, <a href="#7.25.4.5">7.25.4.5</a>
- <a href="#7.22.7.3">7.22.7.3</a>, <a href="#7.27.1.2">7.27.1.2</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.6.3.3">7.28.6.3.3</a>, mtx_unlock function, <a href="#7.25.4.3">7.25.4.3</a>, <a href="#7.25.4.4">7.25.4.4</a>,
- <a href="#K.3.6.4.1">K.3.6.4.1</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a> <a href="#7.25.4.5">7.25.4.5</a>, <a href="#7.25.4.6">7.25.4.6</a>
-MB_LEN_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.1.1">7.1.1</a>, <a href="#7.22">7.22</a> multibyte character, <a href="#3.7.2">3.7.2</a>, <a href="#5.2.1.2">5.2.1.2</a>, <a href="#6.4.4.4">6.4.4.4</a>
-mblen function, <a href="#7.22.7.1">7.22.7.1</a>, <a href="#7.28.6.3">7.28.6.3</a> multibyte conversion functions
-mbrlen function, <a href="#7.28.6.3.1">7.28.6.3.1</a> wide character, <a href="#7.22.7">7.22.7</a>, <a href="#K.3.6.4">K.3.6.4</a>
-mbrtoc16 function, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27.1.1">7.27.1.1</a> extended, <a href="#7.28.6">7.28.6</a>, <a href="#K.3.9.3">K.3.9.3</a>
-mbrtoc32 function, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27.1.3">7.27.1.3</a> restartable, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a>
-mbrtowc function, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, wide string, <a href="#7.22.8">7.22.8</a>, <a href="#K.3.6.5">K.3.6.5</a>
- <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#7.28.6.3.1">7.28.6.3.1</a>, <a href="#7.28.6.3.2">7.28.6.3.2</a>, restartable, <a href="#7.28.6.4">7.28.6.4</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a>
- <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#K.3.6.5.1">K.3.6.5.1</a>, <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a> multibyte string, <a href="#7.1.1">7.1.1</a>
-mbsinit function, <a href="#7.28.6.2.1">7.28.6.2.1</a> multibyte/wide character conversion functions,
-mbsrtowcs function, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a> <a href="#7.22.7">7.22.7</a>, <a href="#K.3.6.4">K.3.6.4</a>
-mbsrtowcs_s function, <a href="#K.3.9.3.2">K.3.9.3.2</a>, <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a> extended, <a href="#7.28.6">7.28.6</a>, <a href="#K.3.9.3">K.3.9.3</a>
-mbstate_t type, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, restartable, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a>
- <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.27">7.27</a>, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.1">7.28.1</a>, <a href="#7.28.2.1">7.28.2.1</a>, multibyte/wide string conversion functions,
- <a href="#7.28.2.2">7.28.2.2</a>, <a href="#7.28.6">7.28.6</a>, <a href="#7.28.6.2.1">7.28.6.2.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#7.22.8">7.22.8</a>, <a href="#K.3.6.5">K.3.6.5</a>
- <a href="#7.28.6.3.1">7.28.6.3.1</a>, <a href="#7.28.6.4">7.28.6.4</a> restartable, <a href="#7.28.6.4">7.28.6.4</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a>
-mbstowcs function, <a href="#6.4.5">6.4.5</a>, <a href="#7.22.8.1">7.22.8.1</a>, <a href="#7.28.6.4">7.28.6.4</a> multidimensional array, <a href="#6.5.2.1">6.5.2.1</a>
-mbstowcs_s function, <a href="#K.3.6.5.1">K.3.6.5.1</a> multiplication assignment operator (*=), <a href="#6.5.16.2">6.5.16.2</a>
-mbtowc function, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.22.7.1">7.22.7.1</a>, <a href="#7.22.7.2">7.22.7.2</a>, multiplication operator (*), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#F.3">F.3</a>,
- <a href="#7.22.8.1">7.22.8.1</a>, <a href="#7.28.6.3">7.28.6.3</a> <a href="#G.5.1">G.5.1</a>
-member access operators (. and ->), <a href="#6.5.2.3">6.5.2.3</a> multiplicative expressions, <a href="#6.5.5">6.5.5</a>, <a href="#G.5.1">G.5.1</a>
-member alignment, <a href="#6.7.2.1">6.7.2.1</a>
-memchr function, <a href="#7.23.5.1">7.23.5.1</a> n-char sequence, <a href="#7.22.1.3">7.22.1.3</a>
-memcmp function, <a href="#7.23.4">7.23.4</a>, <a href="#7.23.4.1">7.23.4.1</a> n-wchar sequence, <a href="#7.28.4.1.1">7.28.4.1.1</a>
-memcpy function, <a href="#7.23.2.1">7.23.2.1</a> name
-memcpy_s function, <a href="#K.3.7.1.1">K.3.7.1.1</a> external, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.11.3">6.11.3</a>
-memmove function, <a href="#7.23.2.2">7.23.2.2</a> file, <a href="#7.21.3">7.21.3</a>
-memmove_s function, <a href="#K.3.7.1.2">K.3.7.1.2</a> internal, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>
-memory location, <a href="#3.14">3.14</a> label, <a href="#6.2.3">6.2.3</a>
-memory management functions, <a href="#7.22.3">7.22.3</a> structure/union member, <a href="#6.2.3">6.2.3</a>
-memory_order type, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.3">7.17.3</a> name spaces, <a href="#6.2.3">6.2.3</a>
-memset function, <a href="#7.23.6.1">7.23.6.1</a>, <a href="#K.3.7.4.1">K.3.7.4.1</a> named label, <a href="#6.8.1">6.8.1</a>
-memset_s function, <a href="#K.3.7.4.1">K.3.7.4.1</a> NaN, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-minimum functions, <a href="#7.12.12">7.12.12</a>, <a href="#F.10.9">F.10.9</a> nan functions, <a href="#7.12.11.2">7.12.11.2</a>, <a href="#F.2.1">F.2.1</a>, <a href="#F.10.8.2">F.10.8.2</a>
-minus operator, unary, <a href="#6.5.3.3">6.5.3.3</a> NAN macro, <a href="#7.12">7.12</a>, <a href="#F.2.1">F.2.1</a>
-miscellaneous functions NDEBUG macro, <a href="#7.2">7.2</a>
- string, <a href="#7.23.6">7.23.6</a>, <a href="#K.3.7.4">K.3.7.4</a> nearbyint functions, <a href="#7.12.9.3">7.12.9.3</a>, <a href="#7.12.9.4">7.12.9.4</a>, <a href="#F.3">F.3</a>,
- wide string, <a href="#7.28.4.6">7.28.4.6</a>, <a href="#K.3.9.2.4">K.3.9.2.4</a> <a href="#F.10.6.3">F.10.6.3</a>
-mktime function, <a href="#7.26.2.3">7.26.2.3</a> nearbyint type-generic macro, <a href="#7.24">7.24</a>
-
-[<a name="p668" href="#p668">page 668</a>] (<a href="#Contents">Contents</a>)
-
-nearest integer functions, <a href="#7.12.9">7.12.9</a>, <a href="#F.10.6">F.10.6</a> operating system, <a href="#5.1.2.1">5.1.2.1</a>, <a href="#7.22.4.8">7.22.4.8</a>
-negation operator (!), <a href="#6.5.3.3">6.5.3.3</a> operations on files, <a href="#7.21.4">7.21.4</a>, <a href="#K.3.5.1">K.3.5.1</a>
-negative zero, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#7.12.11.1">7.12.11.1</a> operator, <a href="#6.4.6">6.4.6</a>
-new-line character, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a>, <a href="#6.10">6.10</a>, <a href="#6.10.4">6.10.4</a> operators, <a href="#6.5">6.5</a>
-new-line escape sequence (\n), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, additive, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.6">6.5.6</a>
- <a href="#7.4.1.10">7.4.1.10</a> alignof, <a href="#6.5.3.4">6.5.3.4</a>
-nextafter functions, <a href="#7.12.11.3">7.12.11.3</a>, <a href="#7.12.11.4">7.12.11.4</a>, <a href="#F.3">F.3</a>, assignment, <a href="#6.5.16">6.5.16</a>
- <a href="#F.10.8.3">F.10.8.3</a> associativity, <a href="#6.5">6.5</a>
-nextafter type-generic macro, <a href="#7.24">7.24</a> equality, <a href="#6.5.9">6.5.9</a>
-nexttoward functions, <a href="#7.12.11.4">7.12.11.4</a>, <a href="#F.3">F.3</a>, <a href="#F.10.8.4">F.10.8.4</a> multiplicative, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#G.5.1">G.5.1</a>
-nexttoward type-generic macro, <a href="#7.24">7.24</a> postfix, <a href="#6.5.2">6.5.2</a>
-no linkage, <a href="#6.2.2">6.2.2</a> precedence, <a href="#6.5">6.5</a>
-no-return function, <a href="#6.7.4">6.7.4</a> preprocessing, <a href="#6.10.1">6.10.1</a>, <a href="#6.10.3.2">6.10.3.2</a>, <a href="#6.10.3.3">6.10.3.3</a>, <a href="#6.10.9">6.10.9</a>
-non-stop floating-point control mode, <a href="#7.6.4.2">7.6.4.2</a> relational, <a href="#6.5.8">6.5.8</a>
-nongraphic characters, <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a> shift, <a href="#6.5.7">6.5.7</a>
-nonlocal jumps header, <a href="#7.13">7.13</a> sizeof, <a href="#6.5.3.4">6.5.3.4</a>
-norm, complex, <a href="#7.3.8.1">7.3.8.1</a> unary, <a href="#6.5.3">6.5.3</a>
-normalized broken-down time, <a href="#K.3.8.1">K.3.8.1</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a> unary arithmetic, <a href="#6.5.3.3">6.5.3.3</a>
-not macro, <a href="#7.9">7.9</a> optional features, see conditional features
-not-equal-to operator, see inequality operator or macro, <a href="#7.9">7.9</a>
-not_eq macro, <a href="#7.9">7.9</a> OR operators
-null character (\0), <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a> bitwise exclusive (^), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.11">6.5.11</a>
- padding of binary stream, <a href="#7.21.2">7.21.2</a> bitwise exclusive assignment (^=), <a href="#6.5.16.2">6.5.16.2</a>
-NULL macro, <a href="#7.11">7.11</a>, <a href="#7.19">7.19</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.22">7.22</a>, <a href="#7.23.1">7.23.1</a>, bitwise inclusive (|), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.12">6.5.12</a>
- <a href="#7.26.1">7.26.1</a>, <a href="#7.28.1">7.28.1</a> bitwise inclusive assignment (|=), <a href="#6.5.16.2">6.5.16.2</a>
-null pointer, <a href="#6.3.2.3">6.3.2.3</a> logical (||), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.14">6.5.14</a>
-null pointer constant, <a href="#6.3.2.3">6.3.2.3</a> or_eq macro, <a href="#7.9">7.9</a>
-null preprocessing directive, <a href="#6.10.7">6.10.7</a> order of allocated storage, <a href="#7.22.3">7.22.3</a>
-null statement, <a href="#6.8.3">6.8.3</a> order of evaluation, <a href="#6.5">6.5</a>, <a href="#6.5.16">6.5.16</a>, <a href="#6.10.3.2">6.10.3.2</a>, <a href="#6.10.3.3">6.10.3.3</a>,
-null wide character, <a href="#7.1.1">7.1.1</a> see also sequence points
-number classification macros, <a href="#7.12">7.12</a>, <a href="#7.12.3.1">7.12.3.1</a> ordinary identifier name space, <a href="#6.2.3">6.2.3</a>
-numeric conversion functions, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1">7.22.1</a> orientation of stream, <a href="#7.21.2">7.21.2</a>, <a href="#7.28.3.5">7.28.3.5</a>
- wide string, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.28.4.1">7.28.4.1</a> out-of-bounds store, <a href="#L.2.1">L.2.1</a>
-numerical limits, <a href="#5.2.4.2">5.2.4.2</a> outer scope, <a href="#6.2.1">6.2.1</a>
- over-aligned, <a href="#6.2.8">6.2.8</a>
-object, <a href="#3.15">3.15</a>
-object representation, <a href="#6.2.6.1">6.2.6.1</a> padding
-object type, <a href="#6.2.5">6.2.5</a> binary stream, <a href="#7.21.2">7.21.2</a>
-object-like macro, <a href="#6.10.3">6.10.3</a> bits, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#7.20.1.1">7.20.1.1</a>
-observable behavior, <a href="#5.1.2.3">5.1.2.3</a> structure/union, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.7.2.1">6.7.2.1</a>
-obsolescence, <a href="#6.11">6.11</a>, <a href="#7.30">7.30</a> parameter, <a href="#3.16">3.16</a>
-octal constant, <a href="#6.4.4.1">6.4.4.1</a> array, <a href="#6.9.1">6.9.1</a>
-octal digit, <a href="#6.4.4.1">6.4.4.1</a>, <a href="#6.4.4.4">6.4.4.4</a> ellipsis, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.10.3">6.10.3</a>
-octal-character escape sequence (\octal digits), function, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7">6.7</a>, <a href="#6.9.1">6.9.1</a>
- <a href="#6.4.4.4">6.4.4.4</a> macro, <a href="#6.10.3">6.10.3</a>
-offsetof macro, <a href="#7.19">7.19</a> main function, <a href="#5.1.2.2.1">5.1.2.2.1</a>
-on-off switch, <a href="#6.10.6">6.10.6</a> program, <a href="#5.1.2.2.1">5.1.2.2.1</a>
-once_flag type, <a href="#7.25.1">7.25.1</a> parameter type list, <a href="#6.7.6.3">6.7.6.3</a>
-ONCE_FLAG_INIT macro, <a href="#7.25.1">7.25.1</a> parentheses punctuator (( )), <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.8.4">6.8.4</a>, <a href="#6.8.5">6.8.5</a>
-ones' complement, <a href="#6.2.6.2">6.2.6.2</a> parenthesized expression, <a href="#6.5.1">6.5.1</a>
-operand, <a href="#6.4.6">6.4.6</a>, <a href="#6.5">6.5</a> parse state, <a href="#7.21.2">7.21.2</a>
-
-[<a name="p669" href="#p669">page 669</a>] (<a href="#Contents">Contents</a>)
-
-perform a trap, <a href="#3.19.5">3.19.5</a> preprocessor, <a href="#6.10">6.10</a>
-permitted form of initializer, <a href="#6.6">6.6</a> PRIcFASTN macros, <a href="#7.8.1">7.8.1</a>
-perror function, <a href="#7.21.10.4">7.21.10.4</a> PRIcLEASTN macros, <a href="#7.8.1">7.8.1</a>
-phase angle, complex, <a href="#7.3.9.1">7.3.9.1</a> PRIcMAX macros, <a href="#7.8.1">7.8.1</a>
-physical source lines, <a href="#5.1.1.2">5.1.1.2</a> PRIcN macros, <a href="#7.8.1">7.8.1</a>
-placemarker, <a href="#6.10.3.3">6.10.3.3</a> PRIcPTR macros, <a href="#7.8.1">7.8.1</a>
-plus operator, unary, <a href="#6.5.3.3">6.5.3.3</a> primary expression, <a href="#6.5.1">6.5.1</a>
-pointer arithmetic, <a href="#6.5.6">6.5.6</a> printf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.3">7.21.6.3</a>, <a href="#7.21.6.10">7.21.6.10</a>,
-pointer comparison, <a href="#6.5.8">6.5.8</a> <a href="#K.3.5.3.3">K.3.5.3.3</a>
-pointer declarator, <a href="#6.7.6.1">6.7.6.1</a> printf_s function, <a href="#K.3.5.3.3">K.3.5.3.3</a>
-pointer operator (->), <a href="#6.5.2.3">6.5.2.3</a> printing character, <a href="#5.2.2">5.2.2</a>, <a href="#7.4">7.4</a>, <a href="#7.4.1.8">7.4.1.8</a>
-pointer to function, <a href="#6.5.2.2">6.5.2.2</a> printing wide character, <a href="#7.29.2">7.29.2</a>
-pointer type, <a href="#6.2.5">6.2.5</a> program diagnostics, <a href="#7.2.1">7.2.1</a>
-pointer type conversion, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a> program execution, <a href="#5.1.2.2.2">5.1.2.2.2</a>, <a href="#5.1.2.3">5.1.2.3</a>
-pointer, null, <a href="#6.3.2.3">6.3.2.3</a> program file, <a href="#5.1.1.1">5.1.1.1</a>
-pole error, <a href="#7.12.1">7.12.1</a>, <a href="#7.12.5.3">7.12.5.3</a>, <a href="#7.12.6.7">7.12.6.7</a>, <a href="#7.12.6.8">7.12.6.8</a>, program image, <a href="#5.1.1.2">5.1.1.2</a>
- <a href="#7.12.6.9">7.12.6.9</a>, <a href="#7.12.6.10">7.12.6.10</a>, <a href="#7.12.6.11">7.12.6.11</a>, <a href="#7.12.7.4">7.12.7.4</a>, program name (argv[0]), <a href="#5.1.2.2.1">5.1.2.2.1</a>
- <a href="#7.12.8.3">7.12.8.3</a>, <a href="#7.12.8.4">7.12.8.4</a> program parameters, <a href="#5.1.2.2.1">5.1.2.2.1</a>
-portability, <a href="#4">4</a>, <a href="#J">J</a> program startup, <a href="#5.1.2">5.1.2</a>, <a href="#5.1.2.1">5.1.2.1</a>, <a href="#5.1.2.2.1">5.1.2.2.1</a>
-position indicator, file, see file position indicator program structure, <a href="#5.1.1.1">5.1.1.1</a>
-positive difference, <a href="#7.12.12.1">7.12.12.1</a> program termination, <a href="#5.1.2">5.1.2</a>, <a href="#5.1.2.1">5.1.2.1</a>, <a href="#5.1.2.2.3">5.1.2.2.3</a>,
-positive difference functions, <a href="#7.12.12">7.12.12</a>, <a href="#F.10.9">F.10.9</a> <a href="#5.1.2.3">5.1.2.3</a>
-postfix decrement operator (--), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a> program, conforming, <a href="#4">4</a>
-postfix expressions, <a href="#6.5.2">6.5.2</a> program, strictly conforming, <a href="#4">4</a>
-postfix increment operator (++), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a> promotions
-pow functions, <a href="#7.12.7.4">7.12.7.4</a>, <a href="#F.10.4.4">F.10.4.4</a> default argument, <a href="#6.5.2.2">6.5.2.2</a>
-pow type-generic macro, <a href="#7.24">7.24</a> integer, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.3.1.1">6.3.1.1</a>
-power functions prototype, see function prototype
- complex, <a href="#7.3.8">7.3.8</a>, <a href="#G.6.4">G.6.4</a> pseudo-random sequence functions, <a href="#7.22.2">7.22.2</a>
- real, <a href="#7.12.7">7.12.7</a>, <a href="#F.10.4">F.10.4</a> PTRDIFF_MAX macro, <a href="#7.20.3">7.20.3</a>
-pp-number, <a href="#6.4.8">6.4.8</a> PTRDIFF_MIN macro, <a href="#7.20.3">7.20.3</a>
-pragma operator, <a href="#6.10.9">6.10.9</a> ptrdiff_t type, <a href="#7.17.1">7.17.1</a>, <a href="#7.19">7.19</a>, <a href="#7.20.3">7.20.3</a>, <a href="#7.21.6.1">7.21.6.1</a>,
-pragma preprocessing directive, <a href="#6.10.6">6.10.6</a>, <a href="#6.11.8">6.11.8</a> <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
-precedence of operators, <a href="#6.5">6.5</a> punctuators, <a href="#6.4.6">6.4.6</a>
-precedence of syntax rules, <a href="#5.1.1.2">5.1.1.2</a> putc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.7">7.21.7.7</a>, <a href="#7.21.7.8">7.21.7.8</a>
-precision, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a> putchar function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.8">7.21.7.8</a>
- excess, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.8.6.4">6.8.6.4</a> puts function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.9">7.21.7.9</a>
-predefined macro names, <a href="#6.10.8">6.10.8</a>, <a href="#6.11.9">6.11.9</a> putwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.8">7.28.3.8</a>, <a href="#7.28.3.9">7.28.3.9</a>
-prefix decrement operator (--), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a> putwchar function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.9">7.28.3.9</a>
-prefix increment operator (++), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a>
-preprocessing concatenation, <a href="#6.10.3.3">6.10.3.3</a> qsort function, <a href="#7.22.5">7.22.5</a>, <a href="#7.22.5.2">7.22.5.2</a>
-preprocessing directives, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.10">6.10</a> qsort_s function, <a href="#K.3.6.3">K.3.6.3</a>, <a href="#K.3.6.3.2">K.3.6.3.2</a>
-preprocessing file, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#6.10">6.10</a> qualified types, <a href="#6.2.5">6.2.5</a>
-preprocessing numbers, <a href="#6.4">6.4</a>, <a href="#6.4.8">6.4.8</a> qualified version of type, <a href="#6.2.5">6.2.5</a>
-preprocessing operators question-mark escape sequence (\?), <a href="#6.4.4.4">6.4.4.4</a>
- #, <a href="#6.10.3.2">6.10.3.2</a> quick_exit function, <a href="#7.22.4.3">7.22.4.3</a>, <a href="#7.22.4.4">7.22.4.4</a>,
- ##, <a href="#6.10.3.3">6.10.3.3</a> <a href="#7.22.4.7">7.22.4.7</a>
- _Pragma, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.10.9">6.10.9</a> quiet NaN, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- defined, <a href="#6.10.1">6.10.1</a>
-preprocessing tokens, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>, <a href="#6.10">6.10</a> raise function, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.14.2.1">7.14.2.1</a>, <a href="#7.22.4.1">7.22.4.1</a>
-preprocessing translation unit, <a href="#5.1.1.1">5.1.1.1</a> rand function, <a href="#7.22">7.22</a>, <a href="#7.22.2.1">7.22.2.1</a>, <a href="#7.22.2.2">7.22.2.2</a>
-
-[<a name="p670" href="#p670">page 670</a>] (<a href="#Contents">Contents</a>)
-
-RAND_MAX macro, <a href="#7.22">7.22</a>, <a href="#7.22.2.1">7.22.2.1</a> restrict-qualified type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.3">6.7.3</a>
-range return statement, <a href="#6.8.6.4">6.8.6.4</a>, <a href="#F.6">F.6</a>
- excess, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.8.6.4">6.8.6.4</a> rewind function, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.5">7.21.9.5</a>,
-range error, <a href="#7.12.1">7.12.1</a>, <a href="#7.12.5.4">7.12.5.4</a>, <a href="#7.12.5.5">7.12.5.5</a>, <a href="#7.12.6.1">7.12.6.1</a>, <a href="#7.28.3.10">7.28.3.10</a>
- <a href="#7.12.6.2">7.12.6.2</a>, <a href="#7.12.6.3">7.12.6.3</a>, <a href="#7.12.6.5">7.12.6.5</a>, <a href="#7.12.6.6">7.12.6.6</a>, right-shift assignment operator (>>=), <a href="#6.5.16.2">6.5.16.2</a>
- <a href="#7.12.6.13">7.12.6.13</a>, <a href="#7.12.7.3">7.12.7.3</a>, <a href="#7.12.7.4">7.12.7.4</a>, <a href="#7.12.8.2">7.12.8.2</a>, right-shift operator (>>), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
- <a href="#7.12.8.3">7.12.8.3</a>, <a href="#7.12.8.4">7.12.8.4</a>, <a href="#7.12.9.5">7.12.9.5</a>, <a href="#7.12.9.7">7.12.9.7</a>, rint functions, <a href="#7.12.9.4">7.12.9.4</a>, <a href="#F.3">F.3</a>, <a href="#F.10.6.4">F.10.6.4</a>
- <a href="#7.12.11.3">7.12.11.3</a>, <a href="#7.12.12.1">7.12.12.1</a>, <a href="#7.12.13.1">7.12.13.1</a> rint type-generic macro, <a href="#7.24">7.24</a>
-rank, see integer conversion rank round functions, <a href="#7.12.9.6">7.12.9.6</a>, <a href="#F.10.6.6">F.10.6.6</a>
-read-modify-write operations, <a href="#5.1.2.4">5.1.2.4</a> round type-generic macro, <a href="#7.24">7.24</a>
-real floating type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>, rounding mode, floating point, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- <a href="#6.3.1.7">6.3.1.7</a>, <a href="#F.3">F.3</a>, <a href="#F.4">F.4</a> RSIZE_MAX macro, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a>,
-real floating types, <a href="#6.2.5">6.2.5</a> <a href="#K.3.5.3.5">K.3.5.3.5</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>, <a href="#K.3.5.3.12">K.3.5.3.12</a>, <a href="#K.3.5.3.13">K.3.5.3.13</a>,
-real type domain, <a href="#6.2.5">6.2.5</a> <a href="#K.3.5.4.1">K.3.5.4.1</a>, <a href="#K.3.6.2.1">K.3.6.2.1</a>, <a href="#K.3.6.3.1">K.3.6.3.1</a>, <a href="#K.3.6.3.2">K.3.6.3.2</a>,
-real types, <a href="#6.2.5">6.2.5</a> <a href="#K.3.6.4.1">K.3.6.4.1</a>, <a href="#K.3.6.5.1">K.3.6.5.1</a>, <a href="#K.3.6.5.2">K.3.6.5.2</a>, <a href="#K.3.7.1.1">K.3.7.1.1</a>,
-real-floating, <a href="#7.12.3">7.12.3</a> <a href="#K.3.7.1.2">K.3.7.1.2</a>, <a href="#K.3.7.1.3">K.3.7.1.3</a>, <a href="#K.3.7.1.4">K.3.7.1.4</a>, <a href="#K.3.7.2.1">K.3.7.2.1</a>,
-realloc function, <a href="#7.22.3">7.22.3</a>, <a href="#7.22.3.5">7.22.3.5</a> <a href="#K.3.7.2.2">K.3.7.2.2</a>, <a href="#K.3.7.3.1">K.3.7.3.1</a>, <a href="#K.3.7.4.1">K.3.7.4.1</a>, <a href="#K.3.7.4.2">K.3.7.4.2</a>,
-recommended practice, <a href="#3.17">3.17</a> <a href="#K.3.8.2.1">K.3.8.2.1</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a>, <a href="#K.3.9.1.3">K.3.9.1.3</a>, <a href="#K.3.9.1.4">K.3.9.1.4</a>,
-recursion, <a href="#6.5.2.2">6.5.2.2</a> <a href="#K.3.9.1.8">K.3.9.1.8</a>, <a href="#K.3.9.1.9">K.3.9.1.9</a>, <a href="#K.3.9.2.1.1">K.3.9.2.1.1</a>, <a href="#K.3.9.2.1.2">K.3.9.2.1.2</a>,
-recursive function call, <a href="#6.5.2.2">6.5.2.2</a> <a href="#K.3.9.2.1.3">K.3.9.2.1.3</a>, <a href="#K.3.9.2.1.4">K.3.9.2.1.4</a>, <a href="#K.3.9.2.2.1">K.3.9.2.2.1</a>,
-redefinition of macro, <a href="#6.10.3">6.10.3</a> <a href="#K.3.9.2.2.2">K.3.9.2.2.2</a>, <a href="#K.3.9.2.3.1">K.3.9.2.3.1</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a>,
-reentrancy, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.3">5.2.3</a> <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a>, <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a>
- library functions, <a href="#7.1.4">7.1.4</a> rsize_t type, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a>, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a>,
-referenced type, <a href="#6.2.5">6.2.5</a> <a href="#K.3.6">K.3.6</a>, <a href="#K.3.7">K.3.7</a>, <a href="#K.3.8">K.3.8</a>, <a href="#K.3.9">K.3.9</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>
-register storage-class specifier, <a href="#6.7.1">6.7.1</a>, <a href="#6.9">6.9</a> runtime-constraint, <a href="#3.18">3.18</a>
-relational expressions, <a href="#6.5.8">6.5.8</a> Runtime-constraint handling functions, <a href="#K.3.6.1">K.3.6.1</a>
-relaxed atomic operations, <a href="#5.1.2.4">5.1.2.4</a> rvalue, <a href="#6.3.2.1">6.3.2.1</a>
-release fence, <a href="#7.17.4">7.17.4</a>
-release operation, <a href="#5.1.2.4">5.1.2.4</a> same scope, <a href="#6.2.1">6.2.1</a>
-release sequence, <a href="#5.1.2.4">5.1.2.4</a> save calling environment function, <a href="#7.13.1">7.13.1</a>
-reliability of data, interrupted, <a href="#5.1.2.3">5.1.2.3</a> scalar types, <a href="#6.2.5">6.2.5</a>
-remainder assignment operator (%=), <a href="#6.5.16.2">6.5.16.2</a> scalbln function, <a href="#7.12.6.13">7.12.6.13</a>, <a href="#F.3">F.3</a>, <a href="#F.10.3.13">F.10.3.13</a>
-remainder functions, <a href="#7.12.10">7.12.10</a>, <a href="#F.10.7">F.10.7</a> scalbln type-generic macro, <a href="#7.24">7.24</a>
-remainder functions, <a href="#7.12.10.2">7.12.10.2</a>, <a href="#7.12.10.3">7.12.10.3</a>, <a href="#F.3">F.3</a>, scalbn function, <a href="#7.12.6.13">7.12.6.13</a>, <a href="#F.3">F.3</a>, <a href="#F.10.3.13">F.10.3.13</a>
- <a href="#F.10.7.2">F.10.7.2</a> scalbn type-generic macro, <a href="#7.24">7.24</a>
-remainder operator (%), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a> scanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.4">7.21.6.4</a>, <a href="#7.21.6.11">7.21.6.11</a>
-remainder type-generic macro, <a href="#7.24">7.24</a> scanf_s function, <a href="#K.3.5.3.4">K.3.5.3.4</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>
-remove function, <a href="#7.21.4.1">7.21.4.1</a>, <a href="#7.21.4.4">7.21.4.4</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> scanlist, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>
-remquo functions, <a href="#7.12.10.3">7.12.10.3</a>, <a href="#F.3">F.3</a>, <a href="#F.10.7.3">F.10.7.3</a> scanset, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>
-remquo type-generic macro, <a href="#7.24">7.24</a> SCHAR_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>
-rename function, <a href="#7.21.4.2">7.21.4.2</a> SCHAR_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>
-representations of types, <a href="#6.2.6">6.2.6</a> SCNcFASTN macros, <a href="#7.8.1">7.8.1</a>
- pointer, <a href="#6.2.5">6.2.5</a> SCNcLEASTN macros, <a href="#7.8.1">7.8.1</a>
-rescanning and replacement, <a href="#6.10.3.4">6.10.3.4</a> SCNcMAX macros, <a href="#7.8.1">7.8.1</a>
-reserved identifiers, <a href="#6.4.1">6.4.1</a>, <a href="#7.1.3">7.1.3</a>, <a href="#K.3.1.2">K.3.1.2</a> SCNcN macros, <a href="#7.8.1">7.8.1</a>
-restartable multibyte/wide character conversion SCNcPTR macros, <a href="#7.8.1">7.8.1</a>
- functions, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a> scope of identifier, <a href="#6.2.1">6.2.1</a>, <a href="#6.9.2">6.9.2</a>
-restartable multibyte/wide string conversion search functions
- functions, <a href="#7.28.6.4">7.28.6.4</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a> string, <a href="#7.23.5">7.23.5</a>, <a href="#K.3.7.3">K.3.7.3</a>
-restore calling environment function, <a href="#7.13.2">7.13.2</a> utility, <a href="#7.22.5">7.22.5</a>, <a href="#K.3.6.3">K.3.6.3</a>
-restrict type qualifier, <a href="#6.7.3">6.7.3</a>, <a href="#6.7.3.1">6.7.3.1</a> wide string, <a href="#7.28.4.5">7.28.4.5</a>, <a href="#K.3.9.2.3">K.3.9.2.3</a>
-
-[<a name="p671" href="#p671">page 671</a>] (<a href="#Contents">Contents</a>)
-
-SEEK_CUR macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.9.2">7.21.9.2</a> sign and magnitude, <a href="#6.2.6.2">6.2.6.2</a>
-SEEK_END macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.9.2">7.21.9.2</a> sign bit, <a href="#6.2.6.2">6.2.6.2</a>
-SEEK_SET macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.9.2">7.21.9.2</a> signal function, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a>
-selection statements, <a href="#6.8.4">6.8.4</a> signal handler, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.3">5.2.3</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.14.2.1">7.14.2.1</a>
-self-referential structure, <a href="#6.7.2.3">6.7.2.3</a> signal handling functions, <a href="#7.14.1">7.14.1</a>
-semicolon punctuator (;), <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.8.3">6.8.3</a>, signal.h header, <a href="#7.14">7.14</a>, <a href="#7.30.6">7.30.6</a>
- <a href="#6.8.5">6.8.5</a>, <a href="#6.8.6">6.8.6</a> signaling NaN, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#F.2.1">F.2.1</a>
-separate compilation, <a href="#5.1.1.1">5.1.1.1</a> signals, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.3">5.2.3</a>, <a href="#7.14.1">7.14.1</a>
-separate translation, <a href="#5.1.1.1">5.1.1.1</a> signbit macro, <a href="#7.12.3.6">7.12.3.6</a>, <a href="#F.3">F.3</a>
-sequence points, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.5.13">6.5.13</a>, <a href="#6.5.14">6.5.14</a>, signed char type, <a href="#6.2.5">6.2.5</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>,
- <a href="#6.5.15">6.5.15</a>, <a href="#6.5.17">6.5.17</a>, <a href="#6.7.3">6.7.3</a>, <a href="#6.7.3.1">6.7.3.1</a>, <a href="#6.7.6">6.7.6</a>, <a href="#6.8">6.8</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>
- <a href="#7.1.4">7.1.4</a>, <a href="#7.21.6">7.21.6</a>, <a href="#7.22.5">7.22.5</a>, <a href="#7.28.2">7.28.2</a>, <a href="#C">C</a>, <a href="#K.3.6.3">K.3.6.3</a> signed character, <a href="#6.3.1.1">6.3.1.1</a>
-sequenced after, see sequenced before signed integer types, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.4.4.1">6.4.4.1</a>
-sequenced before, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.5">6.5</a>, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.5.2.4">6.5.2.4</a>, signed type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>,
- <a href="#6.5.16">6.5.16</a>, see also indeterminately sequenced, <a href="#6.3.1.8">6.3.1.8</a>
- unsequenced signed types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>
-sequencing of statements, <a href="#6.8">6.8</a> significand part, <a href="#6.4.4.2">6.4.4.2</a>
-set_constraint_handler_s function, SIGSEGV macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a>
- <a href="#K.3.1.4">K.3.1.4</a>, <a href="#K.3.6.1.1">K.3.6.1.1</a>, <a href="#K.3.6.1.2">K.3.6.1.2</a>, <a href="#K.3.6.1.3">K.3.6.1.3</a> SIGTERM macro, <a href="#7.14">7.14</a>
-setbuf function, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.5.1">7.21.5.1</a>, <a href="#7.21.5.5">7.21.5.5</a> simple assignment operator (=), <a href="#6.5.16.1">6.5.16.1</a>
-setjmp macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.13.1.1">7.13.1.1</a>, <a href="#7.13.2.1">7.13.2.1</a> sin functions, <a href="#7.12.4.6">7.12.4.6</a>, <a href="#F.10.1.6">F.10.1.6</a>
-setjmp.h header, <a href="#7.13">7.13</a> sin type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
-setlocale function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a> single-byte character, <a href="#3.7.1">3.7.1</a>, <a href="#5.2.1.2">5.2.1.2</a>
-setvbuf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.5.1">7.21.5.1</a>, single-byte/wide character conversion functions,
- <a href="#7.21.5.5">7.21.5.5</a>, <a href="#7.21.5.6">7.21.5.6</a> <a href="#7.28.6.1">7.28.6.1</a>
-shall, <a href="#4">4</a> single-precision arithmetic, <a href="#5.1.2.3">5.1.2.3</a>
-shift expressions, <a href="#6.5.7">6.5.7</a> single-quote escape sequence (\'), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>
-shift sequence, <a href="#7.1.1">7.1.1</a> singularity, <a href="#7.12.1">7.12.1</a>
-shift states, <a href="#5.2.1.2">5.2.1.2</a> sinh functions, <a href="#7.12.5.5">7.12.5.5</a>, <a href="#F.10.2.5">F.10.2.5</a>
-short identifier, character, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.3">6.4.3</a> sinh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
-short int type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.21.6.1">7.21.6.1</a>, SIZE_MAX macro, <a href="#7.20.3">7.20.3</a>
- <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a> size_t type, <a href="#6.2.8">6.2.8</a>, <a href="#6.5.3.4">6.5.3.4</a>, <a href="#7.19">7.19</a>, <a href="#7.20.3">7.20.3</a>, <a href="#7.21.1">7.21.1</a>,
-short int type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22">7.22</a>, <a href="#7.23.1">7.23.1</a>, <a href="#7.26.1">7.26.1</a>, <a href="#7.27">7.27</a>,
- <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.8">6.3.1.8</a> <a href="#7.28.1">7.28.1</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a>,
-SHRT_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a> <a href="#K.3.5">K.3.5</a>, <a href="#K.3.6">K.3.6</a>, <a href="#K.3.7">K.3.7</a>, <a href="#K.3.8">K.3.8</a>, <a href="#K.3.9">K.3.9</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>
-SHRT_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a> sizeof operator, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3">6.5.3</a>, <a href="#6.5.3.4">6.5.3.4</a>
-side effects, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.3.2.2">6.3.2.2</a>, <a href="#6.5">6.5</a>, <a href="#6.5.2.4">6.5.2.4</a>, snprintf function, <a href="#7.21.6.5">7.21.6.5</a>, <a href="#7.21.6.12">7.21.6.12</a>,
- <a href="#6.5.16">6.5.16</a>, <a href="#6.7.9">6.7.9</a>, <a href="#6.8.3">6.8.3</a>, <a href="#7.6">7.6</a>, <a href="#7.6.1">7.6.1</a>, <a href="#7.21.7.5">7.21.7.5</a>, <a href="#K.3.5.3.5">K.3.5.3.5</a>
- <a href="#7.21.7.7">7.21.7.7</a>, <a href="#7.28.3.6">7.28.3.6</a>, <a href="#7.28.3.8">7.28.3.8</a>, <a href="#F.8.1">F.8.1</a>, <a href="#F.9.1">F.9.1</a>, snprintf_s function, <a href="#K.3.5.3.5">K.3.5.3.5</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>
- <a href="#F.9.3">F.9.3</a> snwprintf_s function, <a href="#K.3.9.1.3">K.3.9.1.3</a>, <a href="#K.3.9.1.4">K.3.9.1.4</a>
-SIG_ATOMIC_MAX macro, <a href="#7.20.3">7.20.3</a> sorting utility functions, <a href="#7.22.5">7.22.5</a>, <a href="#K.3.6.3">K.3.6.3</a>
-SIG_ATOMIC_MIN macro, <a href="#7.20.3">7.20.3</a> source character set, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>
-sig_atomic_t type, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a>, source file, <a href="#5.1.1.1">5.1.1.1</a>
- <a href="#7.20.3">7.20.3</a> name, <a href="#6.10.4">6.10.4</a>, <a href="#6.10.8.1">6.10.8.1</a>
-SIG_DFL macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a> source file inclusion, <a href="#6.10.2">6.10.2</a>
-SIG_ERR macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a> source lines, <a href="#5.1.1.2">5.1.1.2</a>
-SIG_IGN macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a> source text, <a href="#5.1.1.2">5.1.1.2</a>
-SIGABRT macro, <a href="#7.14">7.14</a>, <a href="#7.22.4.1">7.22.4.1</a> space character (' '), <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a>, <a href="#7.4.1.3">7.4.1.3</a>,
-SIGFPE macro, <a href="#7.12.1">7.12.1</a>, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#J.5.17">J.5.17</a> <a href="#7.4.1.10">7.4.1.10</a>, <a href="#7.29.2.1.3">7.29.2.1.3</a>
-SIGILL macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a> sprintf function, <a href="#7.21.6.6">7.21.6.6</a>, <a href="#7.21.6.13">7.21.6.13</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>
-SIGINT macro, <a href="#7.14">7.14</a> sprintf_s function, <a href="#K.3.5.3.5">K.3.5.3.5</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>
-
-[<a name="p672" href="#p672">page 672</a>] (<a href="#Contents">Contents</a>)
-
-sqrt functions, <a href="#7.12.7.5">7.12.7.5</a>, <a href="#F.3">F.3</a>, <a href="#F.10.4.5">F.10.4.5</a> do, <a href="#6.8.5.2">6.8.5.2</a>
-sqrt type-generic macro, <a href="#7.24">7.24</a> else, <a href="#6.8.4.1">6.8.4.1</a>
-srand function, <a href="#7.22.2.2">7.22.2.2</a> expression, <a href="#6.8.3">6.8.3</a>
-sscanf function, <a href="#7.21.6.7">7.21.6.7</a>, <a href="#7.21.6.14">7.21.6.14</a> for, <a href="#6.8.5.3">6.8.5.3</a>
-sscanf_s function, <a href="#K.3.5.3.7">K.3.5.3.7</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> goto, <a href="#6.8.6.1">6.8.6.1</a>
-standard error stream, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.10.4">7.21.10.4</a> if, <a href="#6.8.4.1">6.8.4.1</a>
-standard headers, <a href="#4">4</a>, <a href="#7.1.2">7.1.2</a> iteration, <a href="#6.8.5">6.8.5</a>
- <a href="#7.2"><assert.h></a>, <a href="#7.2">7.2</a> jump, <a href="#6.8.6">6.8.6</a>
- <a href="#7.3"><complex.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.3">7.3</a>, labeled, <a href="#6.8.1">6.8.1</a>
- <a href="#7.24">7.24</a>, <a href="#7.30.1">7.30.1</a>, <a href="#G.6">G.6</a>, <a href="#J.5.17">J.5.17</a> null, <a href="#6.8.3">6.8.3</a>
- <a href="#7.4"><ctype.h></a>, <a href="#7.4">7.4</a>, <a href="#7.30.2">7.30.2</a> return, <a href="#6.8.6.4">6.8.6.4</a>, <a href="#F.6">F.6</a>
- <a href="#7.5"><errno.h></a>, <a href="#7.5">7.5</a>, <a href="#7.30.3">7.30.3</a>, <a href="#K.3.2">K.3.2</a> selection, <a href="#6.8.4">6.8.4</a>
- <a href="#7.6"><fenv.h></a>, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F">F</a>, <a href="#H">H</a> sequencing, <a href="#6.8">6.8</a>
- <a href="#7.7"><float.h></a>, <a href="#4">4</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.7">7.7</a>, <a href="#7.22.1.3">7.22.1.3</a>, switch, <a href="#6.8.4.2">6.8.4.2</a>
- <a href="#7.28.4.1.1">7.28.4.1.1</a> while, <a href="#6.8.5.1">6.8.5.1</a>
- <a href="#7.8"><inttypes.h></a>, <a href="#7.8">7.8</a>, <a href="#7.30.4">7.30.4</a> static assertions, <a href="#6.7.10">6.7.10</a>
- <a href="#7.9"><iso646.h></a>, <a href="#4">4</a>, <a href="#7.9">7.9</a> static storage duration, <a href="#6.2.4">6.2.4</a>
- <a href="#7.10"><limits.h></a>, <a href="#4">4</a>, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.2.5">6.2.5</a>, <a href="#7.10">7.10</a> static storage-class specifier, <a href="#6.2.2">6.2.2</a>, <a href="#6.2.4">6.2.4</a>, <a href="#6.7.1">6.7.1</a>
- <a href="#7.11"><locale.h></a>, <a href="#7.11">7.11</a>, <a href="#7.30.5">7.30.5</a> static, in array declarators, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.7.6.3">6.7.6.3</a>
- <a href="#7.12"><math.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.5">6.5</a>, <a href="#7.12">7.12</a>, <a href="#7.24">7.24</a>, <a href="#F">F</a>, <a href="#F.10">F.10</a>, static_assert declaration, <a href="#6.7.10">6.7.10</a>
- <a href="#J.5.17">J.5.17</a> static_assert macro, <a href="#7.2">7.2</a>
- <a href="#7.13"><setjmp.h></a>, <a href="#7.13">7.13</a> stdalign.h header, <a href="#4">4</a>, <a href="#7.15">7.15</a>
- <a href="#7.14"><signal.h></a>, <a href="#7.14">7.14</a>, <a href="#7.30.6">7.30.6</a> stdarg.h header, <a href="#4">4</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#7.16">7.16</a>
- <a href="#7.15"><stdalign.h></a>, <a href="#4">4</a>, <a href="#7.15">7.15</a> stdatomic.h header, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.17">7.17</a>
- <a href="#7.16"><stdarg.h></a>, <a href="#4">4</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#7.16">7.16</a> stdbool.h header, <a href="#4">4</a>, <a href="#7.18">7.18</a>, <a href="#7.30.7">7.30.7</a>, <a href="#H">H</a>
- <a href="#7.17"><stdatomic.h></a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.17">7.17</a> STDC, <a href="#6.10.6">6.10.6</a>, <a href="#6.11.8">6.11.8</a>
- <a href="#7.18"><stdbool.h></a>, <a href="#4">4</a>, <a href="#7.18">7.18</a>, <a href="#7.30.7">7.30.7</a>, <a href="#H">H</a> stddef.h header, <a href="#4">4</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.4.4.4">6.4.4.4</a>,
- <a href="#7.19"><stddef.h></a>, <a href="#4">4</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.5.3.4">6.5.3.4</a>, <a href="#6.5.6">6.5.6</a>, <a href="#7.19">7.19</a>, <a href="#K.3.3">K.3.3</a>
- <a href="#6.4.5">6.4.5</a>, <a href="#6.5.3.4">6.5.3.4</a>, <a href="#6.5.6">6.5.6</a>, <a href="#7.19">7.19</a>, <a href="#K.3.3">K.3.3</a> stderr macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>
- <a href="#7.20"><stdint.h></a>, <a href="#4">4</a>, <a href="#5.2.4.2">5.2.4.2</a>, <a href="#6.10.1">6.10.1</a>, <a href="#7.8">7.8</a>, <a href="#7.20">7.20</a>, stdin macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.4">7.21.6.4</a>,
- <a href="#7.30.8">7.30.8</a>, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a> <a href="#7.21.7.6">7.21.7.6</a>, <a href="#7.28.2.12">7.28.2.12</a>, <a href="#7.28.3.7">7.28.3.7</a>, <a href="#K.3.5.3.4">K.3.5.3.4</a>,
- <a href="#7.21"><stdio.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21">7.21</a>, <a href="#7.30.9">7.30.9</a>, <a href="#F">F</a>, <a href="#K.3.5">K.3.5</a> <a href="#K.3.5.4.1">K.3.5.4.1</a>, <a href="#K.3.9.1.14">K.3.9.1.14</a>
- <a href="#7.22"><stdlib.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.22">7.22</a>, <a href="#7.30.10">7.30.10</a>, <a href="#F">F</a>, stdint.h header, <a href="#4">4</a>, <a href="#5.2.4.2">5.2.4.2</a>, <a href="#6.10.1">6.10.1</a>, <a href="#7.8">7.8</a>, <a href="#7.20">7.20</a>,
- <a href="#K.3.1.4">K.3.1.4</a>, <a href="#K.3.6">K.3.6</a> <a href="#7.30.8">7.30.8</a>, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a>
- <a href="#7.23"><string.h></a>, <a href="#7.23">7.23</a>, <a href="#7.30.11">7.30.11</a>, <a href="#K.3.7">K.3.7</a> stdio.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21">7.21</a>, <a href="#7.30.9">7.30.9</a>, <a href="#F">F</a>, <a href="#K.3.5">K.3.5</a>
- <a href="#7.24"><tgmath.h></a>, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> stdlib.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.22">7.22</a>, <a href="#7.30.10">7.30.10</a>, <a href="#F">F</a>,
- <a href="#7.25"><threads.h></a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.25">7.25</a> <a href="#K.3.1.4">K.3.1.4</a>, <a href="#K.3.6">K.3.6</a>
- <a href="#7.26"><time.h></a>, <a href="#7.26">7.26</a>, <a href="#K.3.8">K.3.8</a> stdout macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.3">7.21.6.3</a>,
- <a href="#7.27"><uchar.h></a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27">7.27</a> <a href="#7.21.7.8">7.21.7.8</a>, <a href="#7.21.7.9">7.21.7.9</a>, <a href="#7.28.2.11">7.28.2.11</a>, <a href="#7.28.3.9">7.28.3.9</a>
- <a href="#7.28"><wchar.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.28">7.28</a>, <a href="#7.30.12">7.30.12</a>, storage duration, <a href="#6.2.4">6.2.4</a>
- <a href="#F">F</a>, <a href="#K.3.9">K.3.9</a> storage order of array, <a href="#6.5.2.1">6.5.2.1</a>
- <a href="#7.29"><wctype.h></a>, <a href="#7.29">7.29</a>, <a href="#7.30.13">7.30.13</a> storage unit (bit-field), <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.7.2.1">6.7.2.1</a>
-standard input stream, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> storage-class specifiers, <a href="#6.7.1">6.7.1</a>, <a href="#6.11.5">6.11.5</a>
-standard integer types, <a href="#6.2.5">6.2.5</a> strcat function, <a href="#7.23.3.1">7.23.3.1</a>
-standard output stream, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> strcat_s function, <a href="#K.3.7.2.1">K.3.7.2.1</a>
-standard signed integer types, <a href="#6.2.5">6.2.5</a> strchr function, <a href="#7.23.5.2">7.23.5.2</a>
-state-dependent encoding, <a href="#5.2.1.2">5.2.1.2</a>, <a href="#7.22.7">7.22.7</a>, <a href="#K.3.6.4">K.3.6.4</a> strcmp function, <a href="#7.23.4">7.23.4</a>, <a href="#7.23.4.2">7.23.4.2</a>
-statements, <a href="#6.8">6.8</a> strcoll function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.23.4.3">7.23.4.3</a>, <a href="#7.23.4.5">7.23.4.5</a>
- break, <a href="#6.8.6.3">6.8.6.3</a> strcpy function, <a href="#7.23.2.3">7.23.2.3</a>
- compound, <a href="#6.8.2">6.8.2</a> strcpy_s function, <a href="#K.3.7.1.3">K.3.7.1.3</a>
- continue, <a href="#6.8.6.2">6.8.6.2</a> strcspn function, <a href="#7.23.5.3">7.23.5.3</a>
-
-[<a name="p673" href="#p673">page 673</a>] (<a href="#Contents">Contents</a>)
-
-streams, <a href="#7.21.2">7.21.2</a>, <a href="#7.22.4.4">7.22.4.4</a> <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.2.2">7.28.2.2</a>
- fully buffered, <a href="#7.21.3">7.21.3</a> strtoull function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1.2">7.22.1.2</a>, <a href="#7.22.1.4">7.22.1.4</a>
- line buffered, <a href="#7.21.3">7.21.3</a> strtoumax function, <a href="#7.8.2.3">7.8.2.3</a>
- orientation, <a href="#7.21.2">7.21.2</a> struct hack, see flexible array member
- standard error, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> struct lconv, <a href="#7.11">7.11</a>
- standard input, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> struct tm, <a href="#7.26.1">7.26.1</a>
- standard output, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> structure
- unbuffered, <a href="#7.21.3">7.21.3</a> arrow operator (->), <a href="#6.5.2.3">6.5.2.3</a>
-strerror function, <a href="#7.21.10.4">7.21.10.4</a>, <a href="#7.23.6.2">7.23.6.2</a> content, <a href="#6.7.2.3">6.7.2.3</a>
-strerror_s function, <a href="#K.3.7.4.2">K.3.7.4.2</a>, <a href="#K.3.7.4.3">K.3.7.4.3</a> dot operator (.), <a href="#6.5.2.3">6.5.2.3</a>
-strerrorlen_s function, <a href="#K.3.7.4.3">K.3.7.4.3</a> initialization, <a href="#6.7.9">6.7.9</a>
-strftime function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.26.3">7.26.3</a>, <a href="#7.26.3.5">7.26.3.5</a>, member alignment, <a href="#6.7.2.1">6.7.2.1</a>
- <a href="#7.28.5.1">7.28.5.1</a>, <a href="#K.3.8.2">K.3.8.2</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a> member name space, <a href="#6.2.3">6.2.3</a>
-stricter, <a href="#6.2.8">6.2.8</a> member operator (.), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.3">6.5.2.3</a>
-strictly conforming program, <a href="#4">4</a> pointer operator (->), <a href="#6.5.2.3">6.5.2.3</a>
-string, <a href="#7.1.1">7.1.1</a> specifier, <a href="#6.7.2.1">6.7.2.1</a>
- comparison functions, <a href="#7.23.4">7.23.4</a> tag, <a href="#6.2.3">6.2.3</a>, <a href="#6.7.2.3">6.7.2.3</a>
- concatenation functions, <a href="#7.23.3">7.23.3</a>, <a href="#K.3.7.2">K.3.7.2</a> type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2.1">6.7.2.1</a>
- conversion functions, <a href="#7.11.1.1">7.11.1.1</a> strxfrm function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.23.4.5">7.23.4.5</a>
- copying functions, <a href="#7.23.2">7.23.2</a>, <a href="#K.3.7.1">K.3.7.1</a> subnormal floating-point numbers, <a href="#5.2.4.2.2">5.2.4.2.2</a>
- library function conventions, <a href="#7.23.1">7.23.1</a> subscripting, <a href="#6.5.2.1">6.5.2.1</a>
- literal, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.5.1">6.5.1</a>, <a href="#6.7.9">6.7.9</a> subtraction assignment operator (-=), <a href="#6.5.16.2">6.5.16.2</a>
- miscellaneous functions, <a href="#7.23.6">7.23.6</a>, <a href="#K.3.7.4">K.3.7.4</a> subtraction operator (-), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a>
- numeric conversion functions, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1">7.22.1</a> suffix
- search functions, <a href="#7.23.5">7.23.5</a>, <a href="#K.3.7.3">K.3.7.3</a> floating constant, <a href="#6.4.4.2">6.4.4.2</a>
-string handling header, <a href="#7.23">7.23</a>, <a href="#K.3.7">K.3.7</a> integer constant, <a href="#6.4.4.1">6.4.4.1</a>
-string.h header, <a href="#7.23">7.23</a>, <a href="#7.30.11">7.30.11</a>, <a href="#K.3.7">K.3.7</a> switch body, <a href="#6.8.4.2">6.8.4.2</a>
-stringizing, <a href="#6.10.3.2">6.10.3.2</a>, <a href="#6.10.9">6.10.9</a> switch case label, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a>
-strlen function, <a href="#7.23.6.3">7.23.6.3</a> switch default label, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a>
-strncat function, <a href="#7.23.3.2">7.23.3.2</a> switch statement, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a>
-strncat_s function, <a href="#K.3.7.2.2">K.3.7.2.2</a> swprintf function, <a href="#7.28.2.3">7.28.2.3</a>, <a href="#7.28.2.7">7.28.2.7</a>,
-strncmp function, <a href="#7.23.4">7.23.4</a>, <a href="#7.23.4.4">7.23.4.4</a> <a href="#K.3.9.1.3">K.3.9.1.3</a>, <a href="#K.3.9.1.4">K.3.9.1.4</a>
-strncpy function, <a href="#7.23.2.4">7.23.2.4</a> swprintf_s function, <a href="#K.3.9.1.3">K.3.9.1.3</a>, <a href="#K.3.9.1.4">K.3.9.1.4</a>
-strncpy_s function, <a href="#K.3.7.1.4">K.3.7.1.4</a> swscanf function, <a href="#7.28.2.4">7.28.2.4</a>, <a href="#7.28.2.8">7.28.2.8</a>
-strnlen_s function, <a href="#K.3.7.4.4">K.3.7.4.4</a> swscanf_s function, <a href="#K.3.9.1.5">K.3.9.1.5</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>
-stronger, <a href="#6.2.8">6.2.8</a> symbols, <a href="#3">3</a>
-strpbrk function, <a href="#7.23.5.4">7.23.5.4</a> synchronization operation, <a href="#5.1.2.4">5.1.2.4</a>
-strrchr function, <a href="#7.23.5.5">7.23.5.5</a> synchronize with, <a href="#5.1.2.4">5.1.2.4</a>
-strspn function, <a href="#7.23.5.6">7.23.5.6</a> syntactic categories, <a href="#6.1">6.1</a>
-strstr function, <a href="#7.23.5.7">7.23.5.7</a> syntax notation, <a href="#6.1">6.1</a>
-strtod function, <a href="#7.12.11.2">7.12.11.2</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.3">7.22.1.3</a>, syntax rule precedence, <a href="#5.1.1.2">5.1.1.2</a>
- <a href="#7.28.2.2">7.28.2.2</a>, <a href="#F.3">F.3</a> syntax summary, language, <a href="#A">A</a>
-strtof function, <a href="#7.12.11.2">7.12.11.2</a>, <a href="#7.22.1.3">7.22.1.3</a>, <a href="#F.3">F.3</a> system function, <a href="#7.22.4.8">7.22.4.8</a>
-strtoimax function, <a href="#7.8.2.3">7.8.2.3</a>
-strtok function, <a href="#7.23.5.8">7.23.5.8</a> tab characters, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a>
-strtok_s function, <a href="#K.3.7.3.1">K.3.7.3.1</a> tag compatibility, <a href="#6.2.7">6.2.7</a>
-strtol function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.2">7.22.1.2</a>, tag name space, <a href="#6.2.3">6.2.3</a>
- <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.2.2">7.28.2.2</a> tags, <a href="#6.7.2.3">6.7.2.3</a>
-strtold function, <a href="#7.12.11.2">7.12.11.2</a>, <a href="#7.22.1.3">7.22.1.3</a>, <a href="#F.3">F.3</a> tan functions, <a href="#7.12.4.7">7.12.4.7</a>, <a href="#F.10.1.7">F.10.1.7</a>
-strtoll function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1.2">7.22.1.2</a>, <a href="#7.22.1.4">7.22.1.4</a> tan type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
-strtoul function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.2">7.22.1.2</a>, tanh functions, <a href="#7.12.5.6">7.12.5.6</a>, <a href="#F.10.2.6">F.10.2.6</a>
-
-[<a name="p674" href="#p674">page 674</a>] (<a href="#Contents">Contents</a>)
-
-tanh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> toupper function, <a href="#7.4.2.2">7.4.2.2</a>
-temporary lifetime, <a href="#6.2.4">6.2.4</a> towctrans function, <a href="#7.29.3.2.1">7.29.3.2.1</a>, <a href="#7.29.3.2.2">7.29.3.2.2</a>
-tentative definition, <a href="#6.9.2">6.9.2</a> towlower function, <a href="#7.29.3.1.1">7.29.3.1.1</a>, <a href="#7.29.3.2.1">7.29.3.2.1</a>
-terms, <a href="#3">3</a> towupper function, <a href="#7.29.3.1.2">7.29.3.1.2</a>, <a href="#7.29.3.2.1">7.29.3.2.1</a>
-text streams, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.21.9.4">7.21.9.4</a> translation environment, <a href="#5">5</a>, <a href="#5.1.1">5.1.1</a>
-tgamma functions, <a href="#7.12.8.4">7.12.8.4</a>, <a href="#F.10.5.4">F.10.5.4</a> translation limits, <a href="#5.2.4.1">5.2.4.1</a>
-tgamma type-generic macro, <a href="#7.24">7.24</a> translation phases, <a href="#5.1.1.2">5.1.1.2</a>
-tgmath.h header, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> translation unit, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#6.9">6.9</a>
-thrd_create function, <a href="#7.25.1">7.25.1</a>, <a href="#7.25.5.1">7.25.5.1</a> trap, see perform a trap
-thrd_current function, <a href="#7.25.5.2">7.25.5.2</a> trap representation, <a href="#3.19.4">3.19.4</a>, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.2.6.2">6.2.6.2</a>,
-thrd_detach function, <a href="#7.25.5.3">7.25.5.3</a> <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.5.2.3">6.5.2.3</a>
-thrd_equal function, <a href="#7.25.5.4">7.25.5.4</a> trigonometric functions
-thrd_exit function, <a href="#7.25.5.5">7.25.5.5</a> complex, <a href="#7.3.5">7.3.5</a>, <a href="#G.6.1">G.6.1</a>
-thrd_join function, <a href="#7.25.5.6">7.25.5.6</a> real, <a href="#7.12.4">7.12.4</a>, <a href="#F.10.1">F.10.1</a>
-thrd_sleep function, <a href="#7.25.5.7">7.25.5.7</a> trigraph sequences, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1.1">5.2.1.1</a>
-thrd_start_t type, <a href="#7.25.1">7.25.1</a> true macro, <a href="#7.18">7.18</a>
-thrd_t type, <a href="#7.25.1">7.25.1</a> trunc functions, <a href="#7.12.9.8">7.12.9.8</a>, <a href="#F.10.6.8">F.10.6.8</a>
-thrd_yield function, <a href="#7.25.5.8">7.25.5.8</a> trunc type-generic macro, <a href="#7.24">7.24</a>
-thread of execution, <a href="#5.1.2.4">5.1.2.4</a>, <a href="#7.1.4">7.1.4</a>, <a href="#7.6">7.6</a>, <a href="#7.22.4.6">7.22.4.6</a> truncation, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#7.12.9.8">7.12.9.8</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.5.3">7.21.5.3</a>
-thread storage duration, <a href="#6.2.4">6.2.4</a>, <a href="#7.6">7.6</a> truncation toward zero, <a href="#6.5.5">6.5.5</a>
-threads header, <a href="#7.25">7.25</a> tss_create function, <a href="#7.25.6.1">7.25.6.1</a>
-threads.h header, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.25">7.25</a> tss_delete function, <a href="#7.25.6.2">7.25.6.2</a>
-time TSS_DTOR_ITERATIONS macro, <a href="#7.25.1">7.25.1</a>
- broken down, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.3">7.26.2.3</a>, <a href="#7.26.3">7.26.3</a>, <a href="#7.26.3.1">7.26.3.1</a>, tss_dtor_t type, <a href="#7.25.1">7.25.1</a>
- <a href="#7.26.3.3">7.26.3.3</a>, <a href="#7.26.3.4">7.26.3.4</a>, <a href="#7.26.3.5">7.26.3.5</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a>, tss_get function, <a href="#7.25.6.3">7.25.6.3</a>
- <a href="#K.3.8.2.3">K.3.8.2.3</a>, <a href="#K.3.8.2.4">K.3.8.2.4</a> tss_set function, <a href="#7.25.6.4">7.25.6.4</a>
- calendar, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.2">7.26.2.2</a>, <a href="#7.26.2.3">7.26.2.3</a>, <a href="#7.26.2.4">7.26.2.4</a>, tss_t type, <a href="#7.25.1">7.25.1</a>
- <a href="#7.26.3.2">7.26.3.2</a>, <a href="#7.26.3.3">7.26.3.3</a>, <a href="#7.26.3.4">7.26.3.4</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a>, two's complement, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#7.20.1.1">7.20.1.1</a>
- <a href="#K.3.8.2.3">K.3.8.2.3</a>, <a href="#K.3.8.2.4">K.3.8.2.4</a> type category, <a href="#6.2.5">6.2.5</a>
- components, <a href="#7.26.1">7.26.1</a>, <a href="#K.3.8.1">K.3.8.1</a> type conversion, <a href="#6.3">6.3</a>
- conversion functions, <a href="#7.26.3">7.26.3</a>, <a href="#K.3.8.2">K.3.8.2</a> type definitions, <a href="#6.7.8">6.7.8</a>
- wide character, <a href="#7.28.5">7.28.5</a> type domain, <a href="#6.2.5">6.2.5</a>, <a href="#G.2">G.2</a>
- local, <a href="#7.26.1">7.26.1</a> type names, <a href="#6.7.7">6.7.7</a>
- manipulation functions, <a href="#7.26.2">7.26.2</a> type punning, <a href="#6.5.2.3">6.5.2.3</a>
- normalized broken down, <a href="#K.3.8.1">K.3.8.1</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a> type qualifiers, <a href="#6.7.3">6.7.3</a>
-time function, <a href="#7.26.2.4">7.26.2.4</a> type specifiers, <a href="#6.7.2">6.7.2</a>
-time.h header, <a href="#7.26">7.26</a>, <a href="#K.3.8">K.3.8</a> type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
-time_t type, <a href="#7.26.1">7.26.1</a> typedef declaration, <a href="#6.7.8">6.7.8</a>
-TIME_UTC macro, <a href="#7.25.7.1">7.25.7.1</a> typedef storage-class specifier, <a href="#6.7.1">6.7.1</a>, <a href="#6.7.8">6.7.8</a>
-tm structure type, <a href="#7.26.1">7.26.1</a>, <a href="#7.28.1">7.28.1</a>, <a href="#K.3.8.1">K.3.8.1</a> types, <a href="#6.2.5">6.2.5</a>
-TMP_MAX macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.4.3">7.21.4.3</a>, <a href="#7.21.4.4">7.21.4.4</a> atomic, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.2.5">6.2.5</a>, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.3">6.5.2.3</a>,
-TMP_MAX_S macro, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.5.1.1">K.3.5.1.1</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.16.2">6.5.16.2</a>, <a href="#6.7.2.4">6.7.2.4</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.17.6">7.17.6</a>
-tmpfile function, <a href="#7.21.4.3">7.21.4.3</a>, <a href="#7.22.4.4">7.22.4.4</a> character, <a href="#6.7.9">6.7.9</a>
-tmpfile_s function, <a href="#K.3.5.1.1">K.3.5.1.1</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> compatible, <a href="#6.2.7">6.2.7</a>, <a href="#6.7.2">6.7.2</a>, <a href="#6.7.3">6.7.3</a>, <a href="#6.7.6">6.7.6</a>
-tmpnam function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.4.3">7.21.4.3</a>, <a href="#7.21.4.4">7.21.4.4</a>, complex, <a href="#6.2.5">6.2.5</a>, <a href="#G">G</a>
- <a href="#K.3.5.1.2">K.3.5.1.2</a> composite, <a href="#6.2.7">6.2.7</a>
-tmpnam_s function, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.5.1.1">K.3.5.1.1</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> const qualified, <a href="#6.7.3">6.7.3</a>
-token, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>, see also preprocessing tokens conversions, <a href="#6.3">6.3</a>
-token concatenation, <a href="#6.10.3.3">6.10.3.3</a> imaginary, <a href="#G">G</a>
-token pasting, <a href="#6.10.3.3">6.10.3.3</a> restrict qualified, <a href="#6.7.3">6.7.3</a>
-tolower function, <a href="#7.4.2.1">7.4.2.1</a> volatile qualified, <a href="#6.7.3">6.7.3</a>
-
-[<a name="p675" href="#p675">page 675</a>] (<a href="#Contents">Contents</a>)
-
-uchar.h header, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27">7.27</a> universal character name, <a href="#6.4.3">6.4.3</a>
-UCHAR_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a> unnormalized floating-point numbers, <a href="#5.2.4.2.2">5.2.4.2.2</a>
-UINT_FASTN_MAX macros, <a href="#7.20.2.3">7.20.2.3</a> unqualified type, <a href="#6.2.5">6.2.5</a>
-uint_fastN_t types, <a href="#7.20.1.3">7.20.1.3</a> unqualified version of type, <a href="#6.2.5">6.2.5</a>
-uint_least16_t type, <a href="#7.27">7.27</a> unsequenced, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.5">6.5</a>, <a href="#6.5.16">6.5.16</a>, see also
-uint_least32_t type, <a href="#7.27">7.27</a> indeterminately sequenced, sequenced
-UINT_LEASTN_MAX macros, <a href="#7.20.2.2">7.20.2.2</a> before
-uint_leastN_t types, <a href="#7.20.1.2">7.20.1.2</a> unsigned char type, <a href="#K.3.5.3.2">K.3.5.3.2</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>
-UINT_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a> unsigned integer suffix, u or <a href="#U">U</a>, <a href="#6.4.4.1">6.4.4.1</a>
-UINTMAX_C macro, <a href="#7.20.4.2">7.20.4.2</a> unsigned integer types, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.4.4.1">6.4.4.1</a>
-UINTMAX_MAX macro, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.20.2.5">7.20.2.5</a> unsigned type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>,
-uintmax_t type, <a href="#7.20.1.5">7.20.1.5</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.8">6.3.1.8</a>
- <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a> unsigned types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>,
-UINTN_C macros, <a href="#7.20.4.1">7.20.4.1</a> <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
-UINTN_MAX macros, <a href="#7.20.2.1">7.20.2.1</a> unspecified behavior, <a href="#3.4.4">3.4.4</a>, <a href="#4">4</a>, <a href="#J.1">J.1</a>
-uintN_t types, <a href="#7.20.1.1">7.20.1.1</a> unspecified value, <a href="#3.19.3">3.19.3</a>
-UINTPTR_MAX macro, <a href="#7.20.2.4">7.20.2.4</a> uppercase letter, <a href="#5.2.1">5.2.1</a>
-uintptr_t type, <a href="#7.20.1.4">7.20.1.4</a> use of library functions, <a href="#7.1.4">7.1.4</a>
-ULLONG_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, USHRT_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>
- <a href="#7.28.4.1.2">7.28.4.1.2</a> usual arithmetic conversions, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.5.5">6.5.5</a>, <a href="#6.5.6">6.5.6</a>,
-ULONG_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#6.5.8">6.5.8</a>, <a href="#6.5.9">6.5.9</a>, <a href="#6.5.10">6.5.10</a>, <a href="#6.5.11">6.5.11</a>, <a href="#6.5.12">6.5.12</a>, <a href="#6.5.15">6.5.15</a>
- <a href="#7.28.4.1.2">7.28.4.1.2</a> UTF-16, <a href="#6.10.8.2">6.10.8.2</a>
-unary arithmetic operators, <a href="#6.5.3.3">6.5.3.3</a> UTF-32, <a href="#6.10.8.2">6.10.8.2</a>
-unary expression, <a href="#6.5.3">6.5.3</a> UTF-8 string literal, see string literal
-unary minus operator (-), <a href="#6.5.3.3">6.5.3.3</a>, <a href="#F.3">F.3</a> utilities, general, <a href="#7.22">7.22</a>, <a href="#K.3.6">K.3.6</a>
-unary operators, <a href="#6.5.3">6.5.3</a> wide string, <a href="#7.28.4">7.28.4</a>, <a href="#K.3.9.2">K.3.9.2</a>
-unary plus operator (+), <a href="#6.5.3.3">6.5.3.3</a>
-unbuffered stream, <a href="#7.21.3">7.21.3</a> va_arg macro, <a href="#7.16">7.16</a>, <a href="#7.16.1">7.16.1</a>, <a href="#7.16.1.1">7.16.1.1</a>, <a href="#7.16.1.2">7.16.1.2</a>,
-undef preprocessing directive, <a href="#6.10.3.5">6.10.3.5</a>, <a href="#7.1.3">7.1.3</a>, <a href="#7.16.1.4">7.16.1.4</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#7.21.6.10">7.21.6.10</a>,
- <a href="#7.1.4">7.1.4</a> <a href="#7.21.6.11">7.21.6.11</a>, <a href="#7.21.6.12">7.21.6.12</a>, <a href="#7.21.6.13">7.21.6.13</a>, <a href="#7.21.6.14">7.21.6.14</a>,
-undefined behavior, <a href="#3.4.3">3.4.3</a>, <a href="#4">4</a>, <a href="#J.2">J.2</a> <a href="#7.28.2.5">7.28.2.5</a>, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.7">7.28.2.7</a>, <a href="#7.28.2.8">7.28.2.8</a>,
-underscore character, <a href="#6.4.2.1">6.4.2.1</a> <a href="#7.28.2.9">7.28.2.9</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>,
-underscore, leading, in identifier, <a href="#7.1.3">7.1.3</a> <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>
-ungetc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.2">7.21.9.2</a>, va_copy macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.16">7.16</a>, <a href="#7.16.1">7.16.1</a>, <a href="#7.16.1.1">7.16.1.1</a>,
- <a href="#7.21.9.3">7.21.9.3</a> <a href="#7.16.1.2">7.16.1.2</a>, <a href="#7.16.1.3">7.16.1.3</a>
-ungetwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.10">7.28.3.10</a> va_end macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.16">7.16</a>, <a href="#7.16.1">7.16.1</a>, <a href="#7.16.1.3">7.16.1.3</a>,
-Unicode, <a href="#7.27">7.27</a>, see also char16_t type, <a href="#7.16.1.4">7.16.1.4</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#7.21.6.10">7.21.6.10</a>,
- char32_t type, wchar_t type <a href="#7.21.6.11">7.21.6.11</a>, <a href="#7.21.6.12">7.21.6.12</a>, <a href="#7.21.6.13">7.21.6.13</a>, <a href="#7.21.6.14">7.21.6.14</a>,
-Unicode required set, <a href="#6.10.8.2">6.10.8.2</a> <a href="#7.28.2.5">7.28.2.5</a>, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.7">7.28.2.7</a>, <a href="#7.28.2.8">7.28.2.8</a>,
-union <a href="#7.28.2.9">7.28.2.9</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>,
- arrow operator (->), <a href="#6.5.2.3">6.5.2.3</a> <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>
- content, <a href="#6.7.2.3">6.7.2.3</a> va_list type, <a href="#7.16">7.16</a>, <a href="#7.16.1.3">7.16.1.3</a>
- dot operator (.), <a href="#6.5.2.3">6.5.2.3</a> va_start macro, <a href="#7.16">7.16</a>, <a href="#7.16.1">7.16.1</a>, <a href="#7.16.1.1">7.16.1.1</a>,
- initialization, <a href="#6.7.9">6.7.9</a> <a href="#7.16.1.2">7.16.1.2</a>, <a href="#7.16.1.3">7.16.1.3</a>, <a href="#7.16.1.4">7.16.1.4</a>, <a href="#7.21.6.8">7.21.6.8</a>,
- member alignment, <a href="#6.7.2.1">6.7.2.1</a> <a href="#7.21.6.9">7.21.6.9</a>, <a href="#7.21.6.10">7.21.6.10</a>, <a href="#7.21.6.11">7.21.6.11</a>, <a href="#7.21.6.12">7.21.6.12</a>,
- member name space, <a href="#6.2.3">6.2.3</a> <a href="#7.21.6.13">7.21.6.13</a>, <a href="#7.21.6.14">7.21.6.14</a>, <a href="#7.28.2.5">7.28.2.5</a>, <a href="#7.28.2.6">7.28.2.6</a>,
- member operator (.), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.3">6.5.2.3</a> <a href="#7.28.2.7">7.28.2.7</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.9">7.28.2.9</a>, <a href="#7.28.2.10">7.28.2.10</a>,
- pointer operator (->), <a href="#6.5.2.3">6.5.2.3</a> <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.7">K.3.9.1.7</a>,
- specifier, <a href="#6.7.2.1">6.7.2.1</a> <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>
- tag, <a href="#6.2.3">6.2.3</a>, <a href="#6.7.2.3">6.7.2.3</a> value, <a href="#3.19">3.19</a>
- type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2.1">6.7.2.1</a> value bits, <a href="#6.2.6.2">6.2.6.2</a>
-
-[<a name="p676" href="#p676">page 676</a>] (<a href="#Contents">Contents</a>)
-
-variable arguments, <a href="#6.10.3">6.10.3</a>, <a href="#7.16">7.16</a> vswscanf function, <a href="#7.28.2.8">7.28.2.8</a>
-variable arguments header, <a href="#7.16">7.16</a> vswscanf_s function, <a href="#K.3.9.1.10">K.3.9.1.10</a>
-variable length array, <a href="#6.7.6">6.7.6</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.10.8.3">6.10.8.3</a> vwprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.9">7.28.2.9</a>, <a href="#K.3.9.1.11">K.3.9.1.11</a>
-variably modified type, <a href="#6.7.6">6.7.6</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.10.8.3">6.10.8.3</a> vwprintf_s function, <a href="#K.3.9.1.11">K.3.9.1.11</a>
-vertical-tab character, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a> vwscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#7.28.3.10">7.28.3.10</a>
-vertical-tab escape sequence (\v), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, vwscanf_s function, <a href="#K.3.9.1.12">K.3.9.1.12</a>
- <a href="#7.4.1.10">7.4.1.10</a>
-vfprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#K.3.5.3.8">K.3.5.3.8</a> warnings, <a href="#I">I</a>
-vfprintf_s function, <a href="#K.3.5.3.8">K.3.5.3.8</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>, wchar.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.28">7.28</a>, <a href="#7.30.12">7.30.12</a>,
- <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> <a href="#F">F</a>, <a href="#K.3.9">K.3.9</a>
-vfscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.9">7.21.6.9</a> WCHAR_MAX macro, <a href="#7.20.3">7.20.3</a>, <a href="#7.28.1">7.28.1</a>
-vfscanf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, WCHAR_MIN macro, <a href="#7.20.3">7.20.3</a>, <a href="#7.28.1">7.28.1</a>
- <a href="#K.3.5.3.14">K.3.5.3.14</a> wchar_t type, <a href="#3.7.3">3.7.3</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.7.9">6.7.9</a>, <a href="#6.10.8.2">6.10.8.2</a>, <a href="#7.19">7.19</a>,
-vfwprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.5">7.28.2.5</a>, <a href="#K.3.9.1.6">K.3.9.1.6</a> <a href="#7.20.3">7.20.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22">7.22</a>, <a href="#7.28.1">7.28.1</a>,
-vfwprintf_s function, <a href="#K.3.9.1.6">K.3.9.1.6</a> <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
-vfwscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.3.10">7.28.3.10</a> wcrtomb function, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>,
-vfwscanf_s function, <a href="#K.3.9.1.7">K.3.9.1.7</a> <a href="#7.28.6.3.3">7.28.6.3.3</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>, <a href="#K.3.6.5.2">K.3.6.5.2</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a>,
-visibility of identifier, <a href="#6.2.1">6.2.1</a> <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a>
-visible sequence of side effects, <a href="#5.1.2.4">5.1.2.4</a> wcrtomb_s function, <a href="#K.3.9.3.1">K.3.9.3.1</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a>
-visible side effect, <a href="#5.1.2.4">5.1.2.4</a> wcscat function, <a href="#7.28.4.3.1">7.28.4.3.1</a>
-VLA, see variable length array wcscat_s function, <a href="#K.3.9.2.2.1">K.3.9.2.2.1</a>
-void expression, <a href="#6.3.2.2">6.3.2.2</a> wcschr function, <a href="#7.28.4.5.1">7.28.4.5.1</a>
-void function parameter, <a href="#6.7.6.3">6.7.6.3</a> wcscmp function, <a href="#7.28.4.4.1">7.28.4.4.1</a>, <a href="#7.28.4.4.4">7.28.4.4.4</a>
-void type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.2.2">6.3.2.2</a>, <a href="#6.7.2">6.7.2</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a>, wcscoll function, <a href="#7.28.4.4.2">7.28.4.4.2</a>, <a href="#7.28.4.4.4">7.28.4.4.4</a>
- <a href="#K.3.9.1.2">K.3.9.1.2</a> wcscpy function, <a href="#7.28.4.2.1">7.28.4.2.1</a>
-void type conversion, <a href="#6.3.2.2">6.3.2.2</a> wcscpy_s function, <a href="#K.3.9.2.1.1">K.3.9.2.1.1</a>
-volatile storage, <a href="#5.1.2.3">5.1.2.3</a> wcscspn function, <a href="#7.28.4.5.2">7.28.4.5.2</a>
-volatile type qualifier, <a href="#6.7.3">6.7.3</a> wcsftime function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.28.5.1">7.28.5.1</a>
-volatile-qualified type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.3">6.7.3</a> wcslen function, <a href="#7.28.4.6.1">7.28.4.6.1</a>
-vprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.10">7.21.6.10</a>, wcsncat function, <a href="#7.28.4.3.2">7.28.4.3.2</a>
- <a href="#K.3.5.3.10">K.3.5.3.10</a> wcsncat_s function, <a href="#K.3.9.2.2.2">K.3.9.2.2.2</a>
-vprintf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.10">K.3.5.3.10</a>, wcsncmp function, <a href="#7.28.4.4.3">7.28.4.4.3</a>
- <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> wcsncpy function, <a href="#7.28.4.2.2">7.28.4.2.2</a>
-vscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.11">7.21.6.11</a> wcsncpy_s function, <a href="#K.3.9.2.1.2">K.3.9.2.1.2</a>
-vscanf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, wcsnlen_s function, <a href="#K.3.9.2.4.1">K.3.9.2.4.1</a>
- <a href="#K.3.5.3.14">K.3.5.3.14</a> wcspbrk function, <a href="#7.28.4.5.3">7.28.4.5.3</a>
-vsnprintf function, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.12">7.21.6.12</a>, wcsrchr function, <a href="#7.28.4.5.4">7.28.4.5.4</a>
- <a href="#K.3.5.3.12">K.3.5.3.12</a> wcsrtombs function, <a href="#7.28.6.4.2">7.28.6.4.2</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a>
-vsnprintf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, wcsrtombs_s function, <a href="#K.3.9.3.2">K.3.9.3.2</a>, <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a>
- <a href="#K.3.5.3.12">K.3.5.3.12</a>, <a href="#K.3.5.3.13">K.3.5.3.13</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> wcsspn function, <a href="#7.28.4.5.5">7.28.4.5.5</a>
-vsnwprintf_s function, <a href="#K.3.9.1.8">K.3.9.1.8</a>, <a href="#K.3.9.1.9">K.3.9.1.9</a> wcsstr function, <a href="#7.28.4.5.6">7.28.4.5.6</a>
-vsprintf function, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.13">7.21.6.13</a>, wcstod function, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>
- <a href="#K.3.5.3.13">K.3.5.3.13</a> wcstod function, <a href="#7.28.4.1.1">7.28.4.1.1</a>
-vsprintf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, wcstof function, <a href="#7.28.4.1.1">7.28.4.1.1</a>
- <a href="#K.3.5.3.12">K.3.5.3.12</a>, <a href="#K.3.5.3.13">K.3.5.3.13</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> wcstoimax function, <a href="#7.8.2.4">7.8.2.4</a>
-vsscanf function, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.14">7.21.6.14</a> wcstok function, <a href="#7.28.4.5.7">7.28.4.5.7</a>
-vsscanf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, wcstok_s function, <a href="#K.3.9.2.3.1">K.3.9.2.3.1</a>
- <a href="#K.3.5.3.14">K.3.5.3.14</a> wcstol function, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>,
-vswprintf function, <a href="#7.28.2.7">7.28.2.7</a>, <a href="#K.3.9.1.8">K.3.9.1.8</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>
- <a href="#K.3.9.1.9">K.3.9.1.9</a> wcstold function, <a href="#7.28.4.1.1">7.28.4.1.1</a>
-vswprintf_s function, <a href="#K.3.9.1.8">K.3.9.1.8</a>, <a href="#K.3.9.1.9">K.3.9.1.9</a> wcstoll function, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>
-
-[<a name="p677" href="#p677">page 677</a>] (<a href="#Contents">Contents</a>)
-
-wcstombs function, <a href="#7.22.8.2">7.22.8.2</a>, <a href="#7.28.6.4">7.28.6.4</a> <a href="#7.29.1">7.29.1</a>
-wcstombs_s function, <a href="#K.3.6.5.2">K.3.6.5.2</a> wmemchr function, <a href="#7.28.4.5.8">7.28.4.5.8</a>
-wcstoul function, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>, wmemcmp function, <a href="#7.28.4.4.5">7.28.4.4.5</a>
- <a href="#7.28.4.1.2">7.28.4.1.2</a> wmemcpy function, <a href="#7.28.4.2.3">7.28.4.2.3</a>
-wcstoull function, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a> wmemcpy_s function, <a href="#K.3.9.2.1.3">K.3.9.2.1.3</a>
-wcstoumax function, <a href="#7.8.2.4">7.8.2.4</a> wmemmove function, <a href="#7.28.4.2.4">7.28.4.2.4</a>
-wcsxfrm function, <a href="#7.28.4.4.4">7.28.4.4.4</a> wmemmove_s function, <a href="#K.3.9.2.1.4">K.3.9.2.1.4</a>
-wctob function, <a href="#7.28.6.1.2">7.28.6.1.2</a>, <a href="#7.29.2.1">7.29.2.1</a> wmemset function, <a href="#7.28.4.6.2">7.28.4.6.2</a>
-wctomb function, <a href="#7.22.7.3">7.22.7.3</a>, <a href="#7.22.8.2">7.22.8.2</a>, <a href="#7.28.6.3">7.28.6.3</a> wprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.9">7.28.2.9</a>, <a href="#7.28.2.11">7.28.2.11</a>,
-wctomb_s function, <a href="#K.3.6.4.1">K.3.6.4.1</a> <a href="#K.3.9.1.13">K.3.9.1.13</a>
-wctrans function, <a href="#7.29.3.2.1">7.29.3.2.1</a>, <a href="#7.29.3.2.2">7.29.3.2.2</a> wprintf_s function, <a href="#K.3.9.1.13">K.3.9.1.13</a>
-wctrans_t type, <a href="#7.29.1">7.29.1</a>, <a href="#7.29.3.2.2">7.29.3.2.2</a> wscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#7.28.2.12">7.28.2.12</a>,
-wctype function, <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.2.2.2">7.29.2.2.2</a> <a href="#7.28.3.10">7.28.3.10</a>
-wctype.h header, <a href="#7.29">7.29</a>, <a href="#7.30.13">7.30.13</a> wscanf_s function, <a href="#K.3.9.1.12">K.3.9.1.12</a>, <a href="#K.3.9.1.14">K.3.9.1.14</a>
-wctype_t type, <a href="#7.29.1">7.29.1</a>, <a href="#7.29.2.2.2">7.29.2.2.2</a>
-weaker, <a href="#6.2.8">6.2.8</a> xor macro, <a href="#7.9">7.9</a>
-WEOF macro, <a href="#7.28.1">7.28.1</a>, <a href="#7.28.3.1">7.28.3.1</a>, <a href="#7.28.3.3">7.28.3.3</a>, <a href="#7.28.3.6">7.28.3.6</a>, xor_eq macro, <a href="#7.9">7.9</a>
- <a href="#7.28.3.7">7.28.3.7</a>, <a href="#7.28.3.8">7.28.3.8</a>, <a href="#7.28.3.9">7.28.3.9</a>, <a href="#7.28.3.10">7.28.3.10</a>, xtime type, <a href="#7.25.1">7.25.1</a>, <a href="#7.25.3.5">7.25.3.5</a>, <a href="#7.25.4.4">7.25.4.4</a>, <a href="#7.25.5.7">7.25.5.7</a>,
- <a href="#7.28.6.1.1">7.28.6.1.1</a>, <a href="#7.29.1">7.29.1</a> <a href="#7.25.7.1">7.25.7.1</a>
-while statement, <a href="#6.8.5.1">6.8.5.1</a> xtime_get function, <a href="#7.25.7.1">7.25.7.1</a>
-white space, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>, <a href="#6.10">6.10</a>, <a href="#7.4.1.10">7.4.1.10</a>,
- <a href="#7.29.2.1.10">7.29.2.1.10</a>
-white-space characters, <a href="#6.4">6.4</a>
-wide character, <a href="#3.7.3">3.7.3</a>
- case mapping functions, <a href="#7.29.3.1">7.29.3.1</a>
- extensible, <a href="#7.29.3.2">7.29.3.2</a>
- classification functions, <a href="#7.29.2.1">7.29.2.1</a>
- extensible, <a href="#7.29.2.2">7.29.2.2</a>
- constant, <a href="#6.4.4.4">6.4.4.4</a>
- formatted input/output functions, <a href="#7.28.2">7.28.2</a>,
- <a href="#K.3.9.1">K.3.9.1</a>
- input functions, <a href="#7.21.1">7.21.1</a>
- input/output functions, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3">7.28.3</a>
- output functions, <a href="#7.21.1">7.21.1</a>
- single-byte conversion functions, <a href="#7.28.6.1">7.28.6.1</a>
-wide string, <a href="#7.1.1">7.1.1</a>
-wide string comparison functions, <a href="#7.28.4.4">7.28.4.4</a>
-wide string concatenation functions, <a href="#7.28.4.3">7.28.4.3</a>,
- <a href="#K.3.9.2.2">K.3.9.2.2</a>
-wide string copying functions, <a href="#7.28.4.2">7.28.4.2</a>, <a href="#K.3.9.2.1">K.3.9.2.1</a>
-wide string literal, see string literal
-wide string miscellaneous functions, <a href="#7.28.4.6">7.28.4.6</a>,
- <a href="#K.3.9.2.4">K.3.9.2.4</a>
-wide string numeric conversion functions, <a href="#7.8.2.4">7.8.2.4</a>,
- <a href="#7.28.4.1">7.28.4.1</a>
-wide string search functions, <a href="#7.28.4.5">7.28.4.5</a>, <a href="#K.3.9.2.3">K.3.9.2.3</a>
-wide-oriented stream, <a href="#7.21.2">7.21.2</a>
-width, <a href="#6.2.6.2">6.2.6.2</a>
-WINT_MAX macro, <a href="#7.20.3">7.20.3</a>
-WINT_MIN macro, <a href="#7.20.3">7.20.3</a>
-wint_t type, <a href="#7.20.3">7.20.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.1">7.28.1</a>, <a href="#7.28.2.1">7.28.2.1</a>,
-
-[<a name="p678" href="#p678">page 678</a>] (<a href="#Contents">Contents</a>)
-</pre></body></html>
+ mbstate_t * restrict ps);</pre>
+ Runtime-constraints
+<p><!--para 3-->
+ None of retval, src, *src, or ps shall be null pointers. If dst is not a null pointer,
+ then neither len nor dstmax shall be greater than RSIZE_MAX. If dst is a null
+ pointer, then dstmax shall equal zero. If dst is not a null pointer, then dstmax shall
+ not equal zero. If dst is not a null pointer and len is not less than dstmax, then a null
+ character shall occur within the first dstmax multibyte characters of the array pointed to
+ by *src.
+<p><!--para 4-->
+ If there is a runtime-constraint violation, then mbsrtowcs_s does the following. If
+ retval is not a null pointer, then mbsrtowcs_s sets *retval to (size_t)(-1).
+ If dst is not a null pointer and dstmax is greater than zero and less than RSIZE_MAX,
+ then mbsrtowcs_s sets dst[0] to the null wide character.
+<h6>Description</h6>
+<p><!--para 5-->
+ The mbsrtowcs_s 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. If dst is not a null
+ pointer, the converted characters are stored into the array pointed to by dst. Conversion
+ continues up to and including a terminating null character, which is also stored.
+ Conversion stops earlier in two cases: when a sequence of bytes is encountered that does
+ not form a valid multibyte character, or (if dst is not a null pointer) when len wide
+<!--page 663 indent 5-->
+ characters have been stored into the array pointed to by dst.<sup><a href="#note439"><b>439)</b></a></sup> If dst is not a null
+ pointer and no null wide character was stored into the array pointed to by dst, then
+ dst[len] is set to the null wide character. Each conversion takes place as if by a call
+ to the mbrtowc function.
+<p><!--para 6-->
+ If dst is not a null pointer, the pointer object pointed to by src is assigned either a null
+ pointer (if conversion stopped due to reaching a terminating null character) or the address
+ just past the last multibyte character converted (if any). If conversion stopped due to
+ reaching a terminating null character and if dst is not a null pointer, the resulting state
+ described is the initial conversion state.
+<p><!--para 7-->
+ Regardless of whether dst is or is not a null pointer, if the input conversion encounters a
+ sequence of bytes that do not form a valid multibyte character, an encoding error occurs:
+ the mbsrtowcs_s function stores the value (size_t)(-1) into *retval and the
+ conversion state is unspecified. Otherwise, the mbsrtowcs_s function stores into
+ *retval the number of multibyte characters successfully converted, not including the
+ terminating null character (if any).
+<p><!--para 8-->
+ All elements following the terminating null wide character (if any) written by
+ mbsrtowcs_s in the array of dstmax wide characters pointed to by dst take
+ unspecified values when mbsrtowcs_s returns.<sup><a href="#note440"><b>440)</b></a></sup>
+<p><!--para 9-->
+ If copying takes place between objects that overlap, the objects take on unspecified
+ values.
+<h6>Returns</h6>
+<p><!--para 10-->
+ The mbsrtowcs_s function returns zero if no runtime-constraint violation and no
+ encoding error occurred. Otherwise, a nonzero value is returned.
+
+<h6>footnotes</h6>
+<p><small><a name="note439" href="#note439">439)</a> Thus, the value of len is ignored if dst is a null pointer.
+</small>
+<p><small><a name="note440" href="#note440">440)</a> This allows an implementation to attempt converting the multibyte string before discovering a
+ terminating null character did not occur where required.
+</small>
+
+<a name="K.3.9.3.2.2" href="#K.3.9.3.2.2"><h5>K.3.9.3.2.2 The wcsrtombs_s function</h5></a>
+<h6>Synopsis</h6>
+<p><!--para 11-->
+<pre>
+ #include <a href="#7.28"><wchar.h></a>
+ errno_t wcsrtombs_s(size_t * restrict retval,
+ char * restrict dst, rsize_t dstmax,
+ const wchar_t ** restrict src, rsize_t len,
+ mbstate_t * restrict ps);</pre>
+
+
+
+
+<!--page 664 indent 5-->
+ Runtime-constraints
+<p><!--para 12-->
+ None of retval, src, *src, or ps shall be null pointers. If dst is not a null pointer,
+ then neither len nor dstmax shall be greater than RSIZE_MAX. If dst is a null
+ pointer, then dstmax shall equal zero. If dst is not a null pointer, then dstmax shall
+ not equal zero. If dst is not a null pointer and len is not less than dstmax, then the
+ conversion shall have been stopped (see below) because a terminating null wide character
+ was reached or because an encoding error occurred.
+<p><!--para 13-->
+ If there is a runtime-constraint violation, then wcsrtombs_s does the following. If
+ retval is not a null pointer, then wcsrtombs_s sets *retval to (size_t)(-1).
+ If dst is not a null pointer and dstmax is greater than zero and less than RSIZE_MAX,
+ then wcsrtombs_s sets dst[0] to the null character.
+<h6>Description</h6>
+<p><!--para 14-->
+ The wcsrtombs_s 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. If dst is not a
+ null pointer, the converted characters are then stored into the array pointed to by dst.
+ Conversion continues up to and including a terminating null wide character, which is also
+ stored. Conversion stops earlier in two cases:
+<ul>
+<li> when a wide character is reached that does not correspond to a valid multibyte
+ character;
+<li> (if dst is not a null pointer) when the next multibyte character would exceed the
+ limit of n total bytes to be stored into the array pointed to by dst. If the wide
+ character being converted is the null wide character, then n is the lesser of len or
+ dstmax. Otherwise, n is the lesser of len or dstmax-1.
+</ul>
+ If the conversion stops without converting a null wide character and dst is not a null
+ pointer, then a null character is stored into the array pointed to by dst immediately
+ following any multibyte characters already stored. Each conversion takes place as if by a
+ call to the wcrtomb function.<sup><a href="#note441"><b>441)</b></a></sup>
+<p><!--para 15-->
+ If dst is not a null pointer, the pointer object pointed to by src is assigned either a null
+ pointer (if conversion stopped due to reaching a terminating null wide character) or the
+ address just past the last wide character converted (if any). If conversion stopped due to
+ reaching a terminating null wide character, the resulting state described is the initial
+ conversion state.
+
+
+<!--page 665 indent 5-->
+<p><!--para 16-->
+ Regardless of whether dst is or is not a null pointer, if the input conversion encounters a
+ wide character that does not correspond to a valid multibyte character, an encoding error
+ occurs: the wcsrtombs_s function stores the value (size_t)(-1) into *retval
+ and the conversion state is unspecified. Otherwise, the wcsrtombs_s function stores
+ into *retval the number of bytes in the resulting multibyte character sequence, not
+ including the terminating null character (if any).
+<p><!--para 17-->
+ All elements following the terminating null character (if any) written by wcsrtombs_s
+ in the array of dstmax elements pointed to by dst take unspecified values when
+ wcsrtombs_s returns.<sup><a href="#note442"><b>442)</b></a></sup>
+<p><!--para 18-->
+ If copying takes place between objects that overlap, the objects take on unspecified
+ values.
+<h6>Returns</h6>
+<p><!--para 19-->
+ The wcsrtombs_s function returns zero if no runtime-constraint violation and no
+ encoding error occurred. Otherwise, a nonzero value is returned.
+
+
+
+
+<!--page 666 indent 4-->
+
+<h6>footnotes</h6>
+<p><small><a name="note441" href="#note441">441)</a> If conversion stops because a terminating null wide character has been reached, the bytes stored
+ include those necessary to reach the initial shift state immediately before the null byte. However, if
+ the conversion stops before a terminating null wide character has been reached, the result will be null
+ terminated, but might not end in the initial shift state.
+</small>
+<p><small><a name="note442" href="#note442">442)</a> When len is not less than dstmax, the implementation might fill the array before discovering a
+ runtime-constraint violation.
+</small>
+
+<a name="L" href="#L"><h2>Annex L</h2></a>
+<pre>
+ (normative)
+ Analyzability</pre>
+
+<a name="L.1" href="#L.1"><h3>L.1 Scope</h3></a>
+<p><!--para 1-->
+ This annex specifies optional behavior that can aid in the analyzability of C programs.
+<p><!--para 2-->
+ An implementation that defines __STDC_ANALYZABLE__ shall conform to the
+ specifications in this annex.<sup><a href="#note443"><b>443)</b></a></sup>
+
+<h6>footnotes</h6>
+<p><small><a name="note443" href="#note443">443)</a> Implementations that do not define __STDC_ANALYZABLE__ are not required to conform to these
+ specifications.
+</small>
+
+<a name="L.2" href="#L.2"><h3>L.2 Definitions</h3></a>
+
+<a name="L.2.1" href="#L.2.1"><h4>L.2.1</h4></a>
+<p><!--para 1-->
+ out-of-bounds store
+ an (attempted) access (<a href="#3.1">3.1</a>) that, at run time, for a given computational state, would
+ modify (or, for an object declared volatile, fetch) one or more bytes that lie outside
+ the bounds permitted by this Standard.
+
+<a name="L.2.2" href="#L.2.2"><h4>L.2.2</h4></a>
+<p><!--para 1-->
+ bounded undefined behavior
+ undefined behavior (<a href="#3.4.3">3.4.3</a>) that does not perform an out-of-bounds store.
+<p><!--para 2-->
+ NOTE 1 The behavior might perform a trap.
+
+<p><!--para 3-->
+ NOTE 2 Any values produced or stored might be indeterminate values.
+
+
+<a name="L.2.3" href="#L.2.3"><h4>L.2.3</h4></a>
+<p><!--para 1-->
+ critical undefined behavior
+ undefined behavior that is not bounded undefined behavior.
+<p><!--para 2-->
+ NOTE The behavior might perform an out-of-bounds store or perform a trap.
+
+
+
+
+<!--page 667 indent 4-->
+
+<a name="L.3" href="#L.3"><h3>L.3 Requirements</h3></a>
+<p><!--para 1-->
+ If the program performs a trap (<a href="#3.19.5">3.19.5</a>), the implementation is permitted to invoke a
+ runtime-constraint handler. Any such semantics are implementation-defined.
+<p><!--para 2-->
+ All undefined behavior shall be limited to bounded undefined behavior, except for the
+ following which are permitted to result in critical undefined behavior:
+<ul>
+<li> An object is referred to outside of its lifetime (<a href="#6.2.4">6.2.4</a>).
+<li> An lvalue does not designate an object when evaluated (<a href="#6.3.2.1">6.3.2.1</a>).
+<li> A pointer is used to call a function whose type is not compatible with the referenced
+ type (<a href="#6.3.2.3">6.3.2.3</a>).
+<li> The operand of the unary * operator has an invalid value (<a href="#6.5.3.2">6.5.3.2</a>).
+<li> Addition or subtraction of a pointer into, or just beyond, an array object and an
+ integer type produces a result that points just beyond the array object and is used as
+ the operand of a unary * operator that is evaluated (<a href="#6.5.6">6.5.6</a>).
+<li> An argument to a library function has an invalid value or a type not expected by a
+ function with variable number of arguments (<a href="#7.1.4">7.1.4</a>).
+<li> The value of a pointer that refers to space deallocated by a call to the free or realloc
+ function is used (<a href="#7.22.3">7.22.3</a>).
+<li> A string or wide string utility function is instructed to access an array beyond the end
+ of an object (<a href="#7.23.1">7.23.1</a>, <a href="#7.28.4">7.28.4</a>).
+<!--page 668 indent -1-->
+</ul>
+
+<a name="Bibliography" href="#Bibliography"><h2>Bibliography</h2></a>
+<ol>
+<li> ''The C Reference Manual'' by Dennis M. Ritchie, a version of which was
+ published in The C Programming Language by Brian W. Kernighan and Dennis
+ M. Ritchie, Prentice-Hall, Inc., (1978). Copyright owned by AT&T.
+<li> 1984 /usr/group Standard by the /usr/group Standards Committee, Santa Clara,
+ California, USA, November 1984.
+<li> ANSI X3/TR-1-82 (1982), American National Dictionary for Information
+ Processing Systems, Information Processing Systems Technical Report.
+<li> ANSI/IEEE 754-1985, American National Standard for Binary Floating-Point
+ Arithmetic.
+<li> ANSI/IEEE 854-1988, American National Standard for Radix-Independent
+ Floating-Point Arithmetic.
+<li> IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems,
+ second edition (previously designated IEC 559:1989).
+<li> ISO 31-11:1992, Quantities and units -- Part 11: Mathematical signs and
+ symbols for use in the physical sciences and technology.
+<li> ISO/IEC 646:1991, Information technology -- ISO 7-bit coded character set for
+ information interchange.
+<li> ISO/IEC 2382-1:1993, Information technology -- Vocabulary -- Part 1:
+ Fundamental terms.
+<li> ISO 4217:1995, Codes for the representation of currencies and funds.
+<li> ISO 8601:1988, Data elements and interchange formats -- Information
+ interchange -- Representation of dates and times.
+<li> ISO/IEC 9899:1990, Programming languages -- C.
+<li> ISO/IEC 9899/COR1:1994, Technical Corrigendum 1.
+<li> ISO/IEC 9899/COR2:1996, Technical Corrigendum 2.
+<li> ISO/IEC 9899/AMD1:1995, Amendment 1 to ISO/IEC 9899:1990 C Integrity.
+<li> ISO/IEC 9899:1999, Programming languages -- C.
+<li> ISO/IEC 9899:1999/Cor.1:2001, Technical Corrigendum 1.
+<li> ISO/IEC 9899:1999/Cor.2:2004, Technical Corrigendum 2.
+<li> ISO/IEC 9899:1999/Cor.3:2007, Technical Corrigendum 3.
+<!--page 669 indent -1-->
+<li> ISO/IEC 9945-2:1993, Information technology -- Portable Operating System
+ Interface (POSIX) -- Part 2: Shell and Utilities.
+<li> ISO/IEC TR 10176:1998, Information technology -- Guidelines for the
+ preparation of programming language standards.
+<li> ISO/IEC 10646-1:1993, Information technology -- Universal Multiple-Octet
+ Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane.
+<li> ISO/IEC 10646-1/COR1:1996, Technical Corrigendum 1 to
+ ISO/IEC 10646-1:1993.
+<li> ISO/IEC 10646-1/COR2:1998, Technical Corrigendum 2 to
+ ISO/IEC 10646-1:1993.
+<li> ISO/IEC 10646-1/AMD1:1996, Amendment 1 to ISO/IEC 10646-1:1993
+ Transformation Format for 16 planes of group 00 (UTF-16).
+<li> ISO/IEC 10646-1/AMD2:1996, Amendment 2 to ISO/IEC 10646-1:1993 UCS
+ Transformation Format 8 (UTF-8).
+<li> ISO/IEC 10646-1/AMD3:1996, Amendment 3 to ISO/IEC 10646-1:1993.
+<li> ISO/IEC 10646-1/AMD4:1996, Amendment 4 to ISO/IEC 10646-1:1993.
+<li> ISO/IEC 10646-1/AMD5:1998, Amendment 5 to ISO/IEC 10646-1:1993 Hangul
+ syllables.
+<li> ISO/IEC 10646-1/AMD6:1997, Amendment 6 to ISO/IEC 10646-1:1993
+ Tibetan.
+<li> ISO/IEC 10646-1/AMD7:1997, Amendment 7 to ISO/IEC 10646-1:1993 33
+ additional characters.
+<li> ISO/IEC 10646-1/AMD8:1997, Amendment 8 to ISO/IEC 10646-1:1993.
+<li> ISO/IEC 10646-1/AMD9:1997, Amendment 9 to ISO/IEC 10646-1:1993
+ Identifiers for characters.
+<li> ISO/IEC 10646-1/AMD10:1998, Amendment 10 to ISO/IEC 10646-1:1993
+ Ethiopic.
+<li> ISO/IEC 10646-1/AMD11:1998, Amendment 11 to ISO/IEC 10646-1:1993
+ Unified Canadian Aboriginal Syllabics.
+<li> ISO/IEC 10646-1/AMD12:1998, Amendment 12 to ISO/IEC 10646-1:1993
+ Cherokee.
+<li> ISO/IEC 10967-1:1994, Information technology -- Language independent
+ arithmetic -- Part 1: Integer and floating point arithmetic.
+<!--page 670 indent -1-->
+<li> ISO/IEC TR 19769:2004, Information technology -- Programming languages,
+ their environments and system software interfaces -- Extensions for the
+ programming language C to support new character data types.
+<li> ISO/IEC TR 24731-1:2007, Information technology -- Programming languages,
+ their environments and system software interfaces -- Extensions to the C library
+ -- Part 1: Bounds-checking interfaces.
+<!--page 671 indent 0-->
+</ol>
+
+<a name="Index" href="#Index"><h2>Index</h2></a>
+<pre>
+ [^ x ^], <a href="#3.20">3.20</a> , (comma operator), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.17">6.5.17</a>
+ , (comma punctuator), <a href="#6.5.2">6.5.2</a>, <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.7.2.2">6.7.2.2</a>,
+ [_ x _], <a href="#3.21">3.21</a> <a href="#6.7.2.3">6.7.2.3</a>, <a href="#6.7.9">6.7.9</a>
+ ! (logical negation operator), <a href="#6.5.3.3">6.5.3.3</a> - (subtraction operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a>
+ != (inequality operator), <a href="#6.5.9">6.5.9</a> - (unary minus operator), <a href="#6.5.3.3">6.5.3.3</a>, <a href="#F.3">F.3</a>
+ # operator, <a href="#6.10.3.2">6.10.3.2</a> -- (postfix decrement operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a>
+ # preprocessing directive, <a href="#6.10.7">6.10.7</a> -- (prefix decrement operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a>
+ # punctuator, <a href="#6.10">6.10</a> -= (subtraction assignment operator), <a href="#6.5.16.2">6.5.16.2</a>
+ ## operator, <a href="#6.10.3.3">6.10.3.3</a> -> (structure/union pointer operator), <a href="#6.5.2.3">6.5.2.3</a>
+ #define preprocessing directive, <a href="#6.10.3">6.10.3</a> . (structure/union member operator), <a href="#6.3.2.1">6.3.2.1</a>,
+ #elif preprocessing directive, <a href="#6.10.1">6.10.1</a> <a href="#6.5.2.3">6.5.2.3</a>
+ #else preprocessing directive, <a href="#6.10.1">6.10.1</a> . punctuator, <a href="#6.7.9">6.7.9</a>
+ #endif preprocessing directive, <a href="#6.10.1">6.10.1</a> ... (ellipsis punctuator), <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.10.3">6.10.3</a>
+ #error preprocessing directive, <a href="#4">4</a>, <a href="#6.10.5">6.10.5</a> / (division operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#F.3">F.3</a>, <a href="#G.5.1">G.5.1</a>
+ #if preprocessing directive, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, /* */ (comment delimiters), <a href="#6.4.9">6.4.9</a>
+ <a href="#6.10.1">6.10.1</a>, <a href="#7.1.4">7.1.4</a> // (comment delimiter), <a href="#6.4.9">6.4.9</a>
+ #ifdef preprocessing directive, <a href="#6.10.1">6.10.1</a> /= (division assignment operator), <a href="#6.5.16.2">6.5.16.2</a>
+ #ifndef preprocessing directive, <a href="#6.10.1">6.10.1</a> : (colon punctuator), <a href="#6.7.2.1">6.7.2.1</a>
+ #include preprocessing directive, <a href="#5.1.1.2">5.1.1.2</a>, :> (alternative spelling of ]), <a href="#6.4.6">6.4.6</a>
+ <a href="#6.10.2">6.10.2</a> ; (semicolon punctuator), <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.8.3">6.8.3</a>,
+ #line preprocessing directive, <a href="#6.10.4">6.10.4</a> <a href="#6.8.5">6.8.5</a>, <a href="#6.8.6">6.8.6</a>
+ #pragma preprocessing directive, <a href="#6.10.6">6.10.6</a> < (less-than operator), <a href="#6.5.8">6.5.8</a>
+ #undef preprocessing directive, <a href="#6.10.3.5">6.10.3.5</a>, <a href="#7.1.3">7.1.3</a>, <% (alternative spelling of {), <a href="#6.4.6">6.4.6</a>
+ <a href="#7.1.4">7.1.4</a> <: (alternative spelling of [), <a href="#6.4.6">6.4.6</a>
+ % (remainder operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a> << (left-shift operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
+ %: (alternative spelling of #), <a href="#6.4.6">6.4.6</a> <<= (left-shift assignment operator), <a href="#6.5.16.2">6.5.16.2</a>
+ %:%: (alternative spelling of ##), <a href="#6.4.6">6.4.6</a> <= (less-than-or-equal-to operator), <a href="#6.5.8">6.5.8</a>
+ %= (remainder assignment operator), <a href="#6.5.16.2">6.5.16.2</a> <a href="#7.2"><assert.h></a> header, <a href="#7.2">7.2</a>
+ %> (alternative spelling of }), <a href="#6.4.6">6.4.6</a> <a href="#7.3"><complex.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>,
+ & (address operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a> <a href="#7.3">7.3</a>, <a href="#7.24">7.24</a>, <a href="#7.30.1">7.30.1</a>, <a href="#G.6">G.6</a>, <a href="#J.5.17">J.5.17</a>
+ & (bitwise AND operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.10">6.5.10</a> <a href="#7.4"><ctype.h></a> header, <a href="#7.4">7.4</a>, <a href="#7.30.2">7.30.2</a>
+ && (logical AND operator), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.13">6.5.13</a> <a href="#7.5"><errno.h></a> header, <a href="#7.5">7.5</a>, <a href="#7.30.3">7.30.3</a>, <a href="#K.3.2">K.3.2</a>
+ &= (bitwise AND assignment operator), <a href="#6.5.16.2">6.5.16.2</a> <a href="#7.6"><fenv.h></a> header, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F">F</a>,
+ ' ' (space character), <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a>, <a href="#7.4.1.3">7.4.1.3</a>, <a href="#H">H</a>
+ <a href="#7.4.1.10">7.4.1.10</a>, <a href="#7.29.2.1.3">7.29.2.1.3</a> <a href="#7.7"><float.h></a> header, <a href="#4">4</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.7">7.7</a>, <a href="#7.22.1.3">7.22.1.3</a>,
+ ( ) (cast operator), <a href="#6.5.4">6.5.4</a> <a href="#7.28.4.1.1">7.28.4.1.1</a>
+ ( ) (function-call operator), <a href="#6.5.2.2">6.5.2.2</a> <a href="#7.8"><inttypes.h></a> header, <a href="#7.8">7.8</a>, <a href="#7.30.4">7.30.4</a>
+ ( ) (parentheses punctuator), <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.8.4">6.8.4</a>, <a href="#6.8.5">6.8.5</a> <a href="#7.9"><iso646.h></a> header, <a href="#4">4</a>, <a href="#7.9">7.9</a>
+ ( ){ } (compound-literal operator), <a href="#6.5.2.5">6.5.2.5</a> <a href="#7.10"><limits.h></a> header, <a href="#4">4</a>, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.2.5">6.2.5</a>, <a href="#7.10">7.10</a>
+ * (asterisk punctuator), <a href="#6.7.6.1">6.7.6.1</a>, <a href="#6.7.6.2">6.7.6.2</a> <a href="#7.11"><locale.h></a> header, <a href="#7.11">7.11</a>, <a href="#7.30.5">7.30.5</a>
+ * (indirection operator), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a> <a href="#7.12"><math.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.5">6.5</a>, <a href="#7.12">7.12</a>, <a href="#7.24">7.24</a>, <a href="#F">F</a>,
+ * (multiplication operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#F.3">F.3</a>, <a href="#F.10">F.10</a>, <a href="#J.5.17">J.5.17</a>
+ <a href="#G.5.1">G.5.1</a> <a href="#7.13"><setjmp.h></a> header, <a href="#7.13">7.13</a>
+ *= (multiplication assignment operator), <a href="#6.5.16.2">6.5.16.2</a> <a href="#7.14"><signal.h></a> header, <a href="#7.14">7.14</a>, <a href="#7.30.6">7.30.6</a>
+ + (addition operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>, <a href="#7.15"><stdalign.h></a> header, <a href="#4">4</a>, <a href="#7.15">7.15</a>
+ <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a> <a href="#7.16"><stdarg.h></a> header, <a href="#4">4</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#7.16">7.16</a>
+ + (unary plus operator), <a href="#6.5.3.3">6.5.3.3</a> <a href="#7.17"><stdatomic.h></a> header, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.17">7.17</a>
+ ++ (postfix increment operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a> <a href="#7.18"><stdbool.h></a> header, <a href="#4">4</a>, <a href="#7.18">7.18</a>, <a href="#7.30.7">7.30.7</a>, <a href="#H">H</a>
+ ++ (prefix increment operator), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a> <a href="#7.19"><stddef.h></a> header, <a href="#4">4</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.4.4.4">6.4.4.4</a>,
+ += (addition assignment operator), <a href="#6.5.16.2">6.5.16.2</a>
+<!--page 672 indent 0-->
+ <a href="#6.4.5">6.4.5</a>, <a href="#6.5.3.4">6.5.3.4</a>, <a href="#6.5.6">6.5.6</a>, <a href="#7.19">7.19</a>, <a href="#K.3.3">K.3.3</a> \x hexadecimal digits (hexadecimal-character
+ <a href="#7.20"><stdint.h></a> header, <a href="#4">4</a>, <a href="#5.2.4.2">5.2.4.2</a>, <a href="#6.10.1">6.10.1</a>, <a href="#7.8">7.8</a>, escape sequence), <a href="#6.4.4.4">6.4.4.4</a>
+ <a href="#7.20">7.20</a>, <a href="#7.30.8">7.30.8</a>, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a> ^ (bitwise exclusive OR operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.11">6.5.11</a>
+ <a href="#7.21"><stdio.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21">7.21</a>, <a href="#7.30.9">7.30.9</a>, <a href="#F">F</a>, ^= (bitwise exclusive OR assignment operator),
+ <a href="#K.3.5">K.3.5</a> <a href="#6.5.16.2">6.5.16.2</a>
+ <a href="#7.22"><stdlib.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.22">7.22</a>, <a href="#7.30.10">7.30.10</a>, <a href="#F">F</a>, __alignas_is_defined macro, <a href="#7.15">7.15</a>
+ <a href="#K.3.1.4">K.3.1.4</a>, <a href="#K.3.6">K.3.6</a> __bool_true_false_are_defined
+ <a href="#7.23"><string.h></a> header, <a href="#7.23">7.23</a>, <a href="#7.30.11">7.30.11</a>, <a href="#K.3.7">K.3.7</a> macro, <a href="#7.18">7.18</a>
+ <a href="#7.24"><tgmath.h></a> header, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> __cplusplus macro, <a href="#6.10.8">6.10.8</a>
+ <a href="#7.25"><threads.h></a> header, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.25">7.25</a> __DATE__ macro, <a href="#6.10.8.1">6.10.8.1</a>
+ <a href="#7.26"><time.h></a> header, <a href="#7.26">7.26</a>, <a href="#K.3.8">K.3.8</a> __FILE__ macro, <a href="#6.10.8.1">6.10.8.1</a>, <a href="#7.2.1.1">7.2.1.1</a>
+ <a href="#7.27"><uchar.h></a> header, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27">7.27</a> __func__ identifier, <a href="#6.4.2.2">6.4.2.2</a>, <a href="#7.2.1.1">7.2.1.1</a>
+ <a href="#7.28"><wchar.h></a> header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.28">7.28</a>, __LINE__ macro, <a href="#6.10.8.1">6.10.8.1</a>, <a href="#7.2.1.1">7.2.1.1</a>
+ <a href="#7.30.12">7.30.12</a>, <a href="#F">F</a>, <a href="#K.3.9">K.3.9</a> __STDC_, <a href="#6.11.9">6.11.9</a>
+ <a href="#7.29"><wctype.h></a> header, <a href="#7.29">7.29</a>, <a href="#7.30.13">7.30.13</a> __STDC__ macro, <a href="#6.10.8.1">6.10.8.1</a>
+ = (equal-sign punctuator), <a href="#6.7">6.7</a>, <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.9">6.7.9</a> __STDC_ANALYZABLE__ macro, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#L.1">L.1</a>
+ = (simple assignment operator), <a href="#6.5.16.1">6.5.16.1</a> __STDC_HOSTED__ macro, <a href="#6.10.8.1">6.10.8.1</a>
+ == (equality operator), <a href="#6.5.9">6.5.9</a> __STDC_IEC_559__ macro, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#F.1">F.1</a>
+ > (greater-than operator), <a href="#6.5.8">6.5.8</a> __STDC_IEC_559_COMPLEX__ macro,
+ >= (greater-than-or-equal-to operator), <a href="#6.5.8">6.5.8</a> <a href="#6.10.8.3">6.10.8.3</a>, <a href="#G.1">G.1</a>
+ >> (right-shift operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a> __STDC_ISO_10646__ macro, <a href="#6.10.8.2">6.10.8.2</a>
+ >>= (right-shift assignment operator), <a href="#6.5.16.2">6.5.16.2</a> __STDC_LIB_EXT1__ macro, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#K.2">K.2</a>
+ ? : (conditional operator), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.15">6.5.15</a> __STDC_MB_MIGHT_NEQ_WC__ macro,
+ ?? (trigraph sequences), <a href="#5.2.1.1">5.2.1.1</a> <a href="#6.10.8.2">6.10.8.2</a>, <a href="#7.19">7.19</a>
+ [ ] (array subscript operator), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a> __STDC_NO_COMPLEX__ macro, <a href="#6.10.8.3">6.10.8.3</a>,
+ [ ] (brackets punctuator), <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.7.9">6.7.9</a> <a href="#7.3.1">7.3.1</a>
+ \ (backslash character), <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a> __STDC_NO_THREADS__ macro, <a href="#6.10.8.3">6.10.8.3</a>,
+ \ (escape character), <a href="#6.4.4.4">6.4.4.4</a> <a href="#7.17.1">7.17.1</a>, <a href="#7.25.1">7.25.1</a>
+ \" (double-quote escape sequence), <a href="#6.4.4.4">6.4.4.4</a>, __STDC_NO_VLA__ macro, <a href="#6.10.8.3">6.10.8.3</a>
+ <a href="#6.4.5">6.4.5</a>, <a href="#6.10.9">6.10.9</a> __STDC_UTF_16__ macro, <a href="#6.10.8.2">6.10.8.2</a>
+ \\ (backslash escape sequence), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.10.9">6.10.9</a> __STDC_UTF_32__ macro, <a href="#6.10.8.2">6.10.8.2</a>
+ \' (single-quote escape sequence), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a> __STDC_VERSION__ macro, <a href="#6.10.8.1">6.10.8.1</a>
+ \0 (null character), <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a> __STDC_WANT_LIB_EXT1__ macro, <a href="#K.3.1.1">K.3.1.1</a>
+ padding of binary stream, <a href="#7.21.2">7.21.2</a> __TIME__ macro, <a href="#6.10.8.1">6.10.8.1</a>
+ \? (question-mark escape sequence), <a href="#6.4.4.4">6.4.4.4</a> __VA_ARGS__ identifier, <a href="#6.10.3">6.10.3</a>, <a href="#6.10.3.1">6.10.3.1</a>
+ \a (alert escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a> _Alignas, <a href="#6.7.5">6.7.5</a>
+ \b (backspace escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a> _Atomic type qualifier, <a href="#6.7.3">6.7.3</a>
+ \f (form-feed escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, _Bool type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.2">6.3.1.2</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.17.1">7.17.1</a>,
+ <a href="#7.4.1.10">7.4.1.10</a> <a href="#F.4">F.4</a>
+ \n (new-line escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, _Bool type conversions, <a href="#6.3.1.2">6.3.1.2</a>
+ <a href="#7.4.1.10">7.4.1.10</a> _Complex types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.3.1">7.3.1</a>, <a href="#G">G</a>
+ \octal digits (octal-character escape sequence), _Complex_I macro, <a href="#7.3.1">7.3.1</a>
+ <a href="#6.4.4.4">6.4.4.4</a> _Exit function, <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a>
+ \r (carriage-return escape sequence), <a href="#5.2.2">5.2.2</a>, _Imaginary keyword, <a href="#G.2">G.2</a>
+ <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.4.1.10">7.4.1.10</a> _Imaginary types, <a href="#7.3.1">7.3.1</a>, <a href="#G">G</a>
+ \t (horizontal-tab escape sequence), <a href="#5.2.2">5.2.2</a>, _Imaginary_I macro, <a href="#7.3.1">7.3.1</a>, <a href="#G.6">G.6</a>
+ <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.4.1.3">7.4.1.3</a>, <a href="#7.4.1.10">7.4.1.10</a>, <a href="#7.29.2.1.3">7.29.2.1.3</a> _IOFBF macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.5">7.21.5.5</a>, <a href="#7.21.5.6">7.21.5.6</a>
+ \U (universal character names), <a href="#6.4.3">6.4.3</a> _IOLBF macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.6">7.21.5.6</a>
+ \u (universal character names), <a href="#6.4.3">6.4.3</a> _IONBF macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.5">7.21.5.5</a>, <a href="#7.21.5.6">7.21.5.6</a>
+ \v (vertical-tab escape sequence), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, _Noreturn, <a href="#6.7.4">6.7.4</a>
+ <a href="#7.4.1.10">7.4.1.10</a> _Pragma operator, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.10.9">6.10.9</a>
+<!--page 673 indent 0-->
+ _Static_assert, <a href="#6.7.10">6.7.10</a>, <a href="#7.2">7.2</a> allocated storage, order and contiguity, <a href="#7.22.3">7.22.3</a>
+ _Thread_local storage-class specifier, <a href="#6.2.4">6.2.4</a>, and macro, <a href="#7.9">7.9</a>
+ <a href="#6.7.1">6.7.1</a> AND operators
+ { } (braces punctuator), <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.2.3">6.7.2.3</a>, <a href="#6.7.9">6.7.9</a>, bitwise (&), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.10">6.5.10</a>
+ <a href="#6.8.2">6.8.2</a> bitwise assignment (&=), <a href="#6.5.16.2">6.5.16.2</a>
+ { } (compound-literal operator), <a href="#6.5.2.5">6.5.2.5</a> logical (&&), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.13">6.5.13</a>
+ | (bitwise inclusive OR operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.12">6.5.12</a> and_eq macro, <a href="#7.9">7.9</a>
+ |= (bitwise inclusive OR assignment operator), anonymous structure, <a href="#6.7.2.1">6.7.2.1</a>
+ <a href="#6.5.16.2">6.5.16.2</a> anonymous union, <a href="#6.7.2.1">6.7.2.1</a>
+ || (logical OR operator), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.14">6.5.14</a> ANSI/IEEE 754, <a href="#F.1">F.1</a>
+ ~ (bitwise complement operator), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.3.3">6.5.3.3</a> ANSI/IEEE 854, <a href="#F.1">F.1</a>
+ argc (main function parameter), <a href="#5.1.2.2.1">5.1.2.2.1</a>
+ abort function, <a href="#7.2.1.1">7.2.1.1</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.21.3">7.21.3</a>, argument, <a href="#3.3">3.3</a>
+ <a href="#7.22.4.1">7.22.4.1</a>, <a href="#7.25.3.6">7.25.3.6</a>, <a href="#K.3.6.1.2">K.3.6.1.2</a> array, <a href="#6.9.1">6.9.1</a>
+ abort_handler_s function, <a href="#K.3.6.1.2">K.3.6.1.2</a> default promotions, <a href="#6.5.2.2">6.5.2.2</a>
+ abs function, <a href="#7.22.6.1">7.22.6.1</a> function, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.9.1">6.9.1</a>
+ absolute-value functions macro, substitution, <a href="#6.10.3.1">6.10.3.1</a>
+ complex, <a href="#7.3.8">7.3.8</a>, <a href="#G.6.4">G.6.4</a> argument, complex, <a href="#7.3.9.1">7.3.9.1</a>
+ integer, <a href="#7.8.2.1">7.8.2.1</a>, <a href="#7.22.6.1">7.22.6.1</a> argv (main function parameter), <a href="#5.1.2.2.1">5.1.2.2.1</a>
+ real, <a href="#7.12.7">7.12.7</a>, <a href="#F.10.4">F.10.4</a> arithmetic constant expression, <a href="#6.6">6.6</a>
+ abstract declarator, <a href="#6.7.7">6.7.7</a> arithmetic conversions, usual, see usual arithmetic
+ abstract machine, <a href="#5.1.2.3">5.1.2.3</a> conversions
+ access, <a href="#3.1">3.1</a>, <a href="#6.7.3">6.7.3</a>, <a href="#L.2.1">L.2.1</a> arithmetic operators
+ accuracy, see floating-point accuracy additive, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.6">6.5.6</a>, <a href="#G.5.2">G.5.2</a>
+ acos functions, <a href="#7.12.4.1">7.12.4.1</a>, <a href="#F.10.1.1">F.10.1.1</a> bitwise, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.3.3">6.5.3.3</a>, <a href="#6.5.10">6.5.10</a>, <a href="#6.5.11">6.5.11</a>, <a href="#6.5.12">6.5.12</a>
+ acos type-generic macro, <a href="#7.24">7.24</a> increment and decrement, <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.3.1">6.5.3.1</a>
+ acosh functions, <a href="#7.12.5.1">7.12.5.1</a>, <a href="#F.10.2.1">F.10.2.1</a> multiplicative, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#G.5.1">G.5.1</a>
+ acosh type-generic macro, <a href="#7.24">7.24</a> shift, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
+ acquire fence, <a href="#7.17.4">7.17.4</a> unary, <a href="#6.5.3.3">6.5.3.3</a>
+ acquire operation, <a href="#5.1.2.4">5.1.2.4</a> arithmetic types, <a href="#6.2.5">6.2.5</a>
+ active position, <a href="#5.2.2">5.2.2</a> arithmetic, pointer, <a href="#6.5.6">6.5.6</a>
+ actual argument, <a href="#3.3">3.3</a> array
+ actual parameter (deprecated), <a href="#3.3">3.3</a> argument, <a href="#6.9.1">6.9.1</a>
+ addition assignment operator (+=), <a href="#6.5.16.2">6.5.16.2</a> declarator, <a href="#6.7.6.2">6.7.6.2</a>
+ addition operator (+), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>, initialization, <a href="#6.7.9">6.7.9</a>
+ <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a> multidimensional, <a href="#6.5.2.1">6.5.2.1</a>
+ additive expressions, <a href="#6.5.6">6.5.6</a>, <a href="#G.5.2">G.5.2</a> parameter, <a href="#6.9.1">6.9.1</a>
+ address constant, <a href="#6.6">6.6</a> storage order, <a href="#6.5.2.1">6.5.2.1</a>
+ address operator (&), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a> subscript operator ([ ]), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>
+ address-free, <a href="#7.17.5">7.17.5</a> subscripting, <a href="#6.5.2.1">6.5.2.1</a>
+ aggregate initialization, <a href="#6.7.9">6.7.9</a> type, <a href="#6.2.5">6.2.5</a>
+ aggregate types, <a href="#6.2.5">6.2.5</a> type conversion, <a href="#6.3.2.1">6.3.2.1</a>
+ alert escape sequence (\a), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a> variable length, <a href="#6.7.6">6.7.6</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.10.8.3">6.10.8.3</a>
+ aliasing, <a href="#6.5">6.5</a> arrow operator (->), <a href="#6.5.2.3">6.5.2.3</a>
+ alignas macro, <a href="#7.15">7.15</a> as-if rule, <a href="#5.1.2.3">5.1.2.3</a>
+ aligned_alloc function, <a href="#7.22.3">7.22.3</a>, <a href="#7.22.3.1">7.22.3.1</a> ASCII code set, <a href="#5.2.1.1">5.2.1.1</a>
+ alignment, <a href="#3.2">3.2</a>, <a href="#6.2.8">6.2.8</a>, <a href="#7.22.3.1">7.22.3.1</a> asctime function, <a href="#7.26.3.1">7.26.3.1</a>
+ pointer, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.2.3">6.3.2.3</a> asctime_s function, <a href="#K.3.8.2">K.3.8.2</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a>
+ structure/union member, <a href="#6.7.2.1">6.7.2.1</a> asin functions, <a href="#7.12.4.2">7.12.4.2</a>, <a href="#F.10.1.2">F.10.1.2</a>
+ alignment specifier, <a href="#6.7.5">6.7.5</a> asin type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
+ alignof operator, <a href="#6.5.3">6.5.3</a>, <a href="#6.5.3.4">6.5.3.4</a> asinh functions, <a href="#7.12.5.2">7.12.5.2</a>, <a href="#F.10.2.2">F.10.2.2</a>
+<!--page 674 indent 0-->
+ asinh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> atomic_is_lock_free generic function,
+ asm keyword, <a href="#J.5.10">J.5.10</a> <a href="#7.17.5.1">7.17.5.1</a>
+ assert macro, <a href="#7.2.1.1">7.2.1.1</a> ATOMIC_LLONG_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a>
+ assert.h header, <a href="#7.2">7.2</a> atomic_load generic functions, <a href="#7.17.7.2">7.17.7.2</a>
+ assignment ATOMIC_LONG_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a>
+ compound, <a href="#6.5.16.2">6.5.16.2</a> ATOMIC_SHORT_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a>
+ conversion, <a href="#6.5.16.1">6.5.16.1</a> atomic_signal_fence function, <a href="#7.17.4.2">7.17.4.2</a>
+ expression, <a href="#6.5.16">6.5.16</a> atomic_store generic functions, <a href="#7.17.7.1">7.17.7.1</a>
+ operators, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.16">6.5.16</a> atomic_thread_fence function, <a href="#7.17.4.1">7.17.4.1</a>
+ simple, <a href="#6.5.16.1">6.5.16.1</a> ATOMIC_VAR_INIT macro, <a href="#7.17.2.1">7.17.2.1</a>
+ associativity of operators, <a href="#6.5">6.5</a> ATOMIC_WCHAR_T_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a>
+ asterisk punctuator (*), <a href="#6.7.6.1">6.7.6.1</a>, <a href="#6.7.6.2">6.7.6.2</a> atomics header, <a href="#7.17">7.17</a>
+ at_quick_exit function, <a href="#7.22.4.2">7.22.4.2</a>, <a href="#7.22.4.3">7.22.4.3</a>, auto storage-class specifier, <a href="#6.7.1">6.7.1</a>, <a href="#6.9">6.9</a>
+ <a href="#7.22.4.4">7.22.4.4</a>, <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a> automatic storage duration, <a href="#5.2.3">5.2.3</a>, <a href="#6.2.4">6.2.4</a>
+ atan functions, <a href="#7.12.4.3">7.12.4.3</a>, <a href="#F.10.1.3">F.10.1.3</a>
+ atan type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> backslash character (\), <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a>
+ atan2 functions, <a href="#7.12.4.4">7.12.4.4</a>, <a href="#F.10.1.4">F.10.1.4</a> backslash escape sequence (\\), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.10.9">6.10.9</a>
+ atan2 type-generic macro, <a href="#7.24">7.24</a> backspace escape sequence (\b), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>
+ atanh functions, <a href="#7.12.5.3">7.12.5.3</a>, <a href="#F.10.2.3">F.10.2.3</a> basic character set, <a href="#3.6">3.6</a>, <a href="#3.7.2">3.7.2</a>, <a href="#5.2.1">5.2.1</a>
+ atanh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> basic types, <a href="#6.2.5">6.2.5</a>
+ atexit function, <a href="#7.22.4.2">7.22.4.2</a>, <a href="#7.22.4.3">7.22.4.3</a>, <a href="#7.22.4.4">7.22.4.4</a>, behavior, <a href="#3.4">3.4</a>
+ <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a>, <a href="#J.5.13">J.5.13</a> binary streams, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.2">7.21.9.2</a>,
+ atof function, <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.1">7.22.1.1</a> <a href="#7.21.9.4">7.21.9.4</a>
+ atoi function, <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.2">7.22.1.2</a> bit, <a href="#3.5">3.5</a>
+ atol function, <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.2">7.22.1.2</a> high order, <a href="#3.6">3.6</a>
+ atoll function, <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.2">7.22.1.2</a> low order, <a href="#3.6">3.6</a>
+ atomic lock-free macros, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.5">7.17.5</a> bit-field, <a href="#6.7.2.1">6.7.2.1</a>
+ atomic operations, <a href="#5.1.2.4">5.1.2.4</a> bitand macro, <a href="#7.9">7.9</a>
+ atomic types, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.2.5">6.2.5</a>, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.3.2.1">6.3.2.1</a>, bitor macro, <a href="#7.9">7.9</a>
+ <a href="#6.5.2.3">6.5.2.3</a>, <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.16.2">6.5.16.2</a>, <a href="#6.7.2.4">6.7.2.4</a>, <a href="#6.10.8.3">6.10.8.3</a>, bitwise operators, <a href="#6.5">6.5</a>
+ <a href="#7.17.6">7.17.6</a> AND, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.10">6.5.10</a>
+ atomic_address type, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.6">7.17.6</a> AND assignment (&=), <a href="#6.5.16.2">6.5.16.2</a>
+ ATOMIC_ADDRESS_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a> complement (~), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.3.3">6.5.3.3</a>
+ atomic_bool type, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.6">7.17.6</a> exclusive OR, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.11">6.5.11</a>
+ ATOMIC_CHAR16_T_LOCK_FREE macro, exclusive OR assignment (^=), <a href="#6.5.16.2">6.5.16.2</a>
+ <a href="#7.17.1">7.17.1</a> inclusive OR, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.12">6.5.12</a>
+ ATOMIC_CHAR32_T_LOCK_FREE macro, inclusive OR assignment (|=), <a href="#6.5.16.2">6.5.16.2</a>
+ <a href="#7.17.1">7.17.1</a> shift, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
+ ATOMIC_CHAR_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a> blank character, <a href="#7.4.1.3">7.4.1.3</a>
+ atomic_compare_exchange generic block, <a href="#6.8">6.8</a>, <a href="#6.8.2">6.8.2</a>, <a href="#6.8.4">6.8.4</a>, <a href="#6.8.5">6.8.5</a>
+ functions, <a href="#7.17.7.4">7.17.7.4</a> block scope, <a href="#6.2.1">6.2.1</a>
+ atomic_exchange generic functions, <a href="#7.17.7.3">7.17.7.3</a> block structure, <a href="#6.2.1">6.2.1</a>
+ atomic_fetch and modify generic functions, bold type convention, <a href="#6.1">6.1</a>
+ <a href="#7.17.7.5">7.17.7.5</a> bool macro, <a href="#7.18">7.18</a>
+ atomic_flag type, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.8">7.17.8</a> boolean type, <a href="#6.3.1.2">6.3.1.2</a>
+ atomic_flag_clear functions, <a href="#7.17.8.2">7.17.8.2</a> boolean type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.2">6.3.1.2</a>
+ ATOMIC_FLAG_INIT macro, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.8">7.17.8</a> bounded undefined behavior, <a href="#L.2.2">L.2.2</a>
+ atomic_flag_test_and_set functions, braces punctuator ({ }), <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.2.3">6.7.2.3</a>, <a href="#6.7.9">6.7.9</a>,
+ <a href="#7.17.8.1">7.17.8.1</a> <a href="#6.8.2">6.8.2</a>
+ atomic_init generic function, <a href="#7.17.2.2">7.17.2.2</a> brackets operator ([ ]), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>
+ ATOMIC_INT_LOCK_FREE macro, <a href="#7.17.1">7.17.1</a> brackets punctuator ([ ]), <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.7.9">6.7.9</a>
+<!--page 675 indent 0-->
+ branch cuts, <a href="#7.3.3">7.3.3</a> type-generic macro for, <a href="#7.24">7.24</a>
+ break statement, <a href="#6.8.6.3">6.8.6.3</a> ccosh functions, <a href="#7.3.6.4">7.3.6.4</a>, <a href="#G.6.2.4">G.6.2.4</a>
+ broken-down time, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.3">7.26.2.3</a>, <a href="#7.26.3">7.26.3</a>, type-generic macro for, <a href="#7.24">7.24</a>
+ <a href="#7.26.3.1">7.26.3.1</a>, <a href="#7.26.3.3">7.26.3.3</a>, <a href="#7.26.3.4">7.26.3.4</a>, <a href="#7.26.3.5">7.26.3.5</a>, ceil functions, <a href="#7.12.9.1">7.12.9.1</a>, <a href="#F.10.6.1">F.10.6.1</a>
+ <a href="#K.3.8.2.1">K.3.8.2.1</a>, <a href="#K.3.8.2.3">K.3.8.2.3</a>, <a href="#K.3.8.2.4">K.3.8.2.4</a> ceil type-generic macro, <a href="#7.24">7.24</a>
+ bsearch function, <a href="#7.22.5">7.22.5</a>, <a href="#7.22.5.1">7.22.5.1</a> cerf function, <a href="#7.30.1">7.30.1</a>
+ bsearch_s function, <a href="#K.3.6.3">K.3.6.3</a>, <a href="#K.3.6.3.1">K.3.6.3.1</a> cerfc function, <a href="#7.30.1">7.30.1</a>
+ btowc function, <a href="#7.28.6.1.1">7.28.6.1.1</a> cexp functions, <a href="#7.3.7.1">7.3.7.1</a>, <a href="#G.6.3.1">G.6.3.1</a>
+ BUFSIZ macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.5.5">7.21.5.5</a> type-generic macro for, <a href="#7.24">7.24</a>
+ byte, <a href="#3.6">3.6</a>, <a href="#6.5.3.4">6.5.3.4</a> cexp2 function, <a href="#7.30.1">7.30.1</a>
+ byte input/output functions, <a href="#7.21.1">7.21.1</a> cexpm1 function, <a href="#7.30.1">7.30.1</a>
+ byte-oriented stream, <a href="#7.21.2">7.21.2</a> char type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.7.2">6.7.2</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a>,
+ <a href="#K.3.9.1.2">K.3.9.1.2</a>
+ <a href="#C">C</a> program, <a href="#5.1.1.1">5.1.1.1</a> char type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>,
+ c16rtomb function, <a href="#7.27.1.2">7.27.1.2</a> <a href="#6.3.1.8">6.3.1.8</a>
+ c32rtomb function, <a href="#7.27.1.4">7.27.1.4</a> char16_t type, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.10.8.2">6.10.8.2</a>, <a href="#7.27">7.27</a>
+ cabs functions, <a href="#7.3.8.1">7.3.8.1</a>, <a href="#G.6">G.6</a> char32_t type, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.10.8.2">6.10.8.2</a>, <a href="#7.27">7.27</a>
+ type-generic macro for, <a href="#7.24">7.24</a> CHAR_BIT macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.7.2.1">6.7.2.1</a>
+ cacos functions, <a href="#7.3.5.1">7.3.5.1</a>, <a href="#G.6.1.1">G.6.1.1</a> CHAR_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
+ type-generic macro for, <a href="#7.24">7.24</a> CHAR_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>
+ cacosh functions, <a href="#7.3.6.1">7.3.6.1</a>, <a href="#G.6.2.1">G.6.2.1</a> character, <a href="#3.7">3.7</a>, <a href="#3.7.1">3.7.1</a>
+ type-generic macro for, <a href="#7.24">7.24</a> character array initialization, <a href="#6.7.9">6.7.9</a>
+ calendar time, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.2">7.26.2.2</a>, <a href="#7.26.2.3">7.26.2.3</a>, <a href="#7.26.2.4">7.26.2.4</a>, character case mapping functions, <a href="#7.4.2">7.4.2</a>
+ <a href="#7.26.3.2">7.26.3.2</a>, <a href="#7.26.3.3">7.26.3.3</a>, <a href="#7.26.3.4">7.26.3.4</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a>, wide character, <a href="#7.29.3.1">7.29.3.1</a>
+ <a href="#K.3.8.2.3">K.3.8.2.3</a>, <a href="#K.3.8.2.4">K.3.8.2.4</a> extensible, <a href="#7.29.3.2">7.29.3.2</a>
+ call by value, <a href="#6.5.2.2">6.5.2.2</a> character classification functions, <a href="#7.4.1">7.4.1</a>
+ call_once function, <a href="#7.25.1">7.25.1</a>, <a href="#7.25.2.1">7.25.2.1</a> wide character, <a href="#7.29.2.1">7.29.2.1</a>
+ calloc function, <a href="#7.22.3">7.22.3</a>, <a href="#7.22.3.2">7.22.3.2</a> extensible, <a href="#7.29.2.2">7.29.2.2</a>
+ carg functions, <a href="#7.3.9.1">7.3.9.1</a>, <a href="#G.6">G.6</a> character constant, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a>
+ carg type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> character display semantics, <a href="#5.2.2">5.2.2</a>
+ carriage-return escape sequence (\r), <a href="#5.2.2">5.2.2</a>, character handling header, <a href="#7.4">7.4</a>, <a href="#7.11.1.1">7.11.1.1</a>
+ <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.4.1.10">7.4.1.10</a> character input/output functions, <a href="#7.21.7">7.21.7</a>, <a href="#K.3.5.4">K.3.5.4</a>
+ carries a dependency, <a href="#5.1.2.4">5.1.2.4</a> wide character, <a href="#7.28.3">7.28.3</a>
+ case label, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a> character sets, <a href="#5.2.1">5.2.1</a>
+ case mapping functions character string literal, see string literal
+ character, <a href="#7.4.2">7.4.2</a> character type conversion, <a href="#6.3.1.1">6.3.1.1</a>
+ wide character, <a href="#7.29.3.1">7.29.3.1</a> character types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.9">6.7.9</a>
+ extensible, <a href="#7.29.3.2">7.29.3.2</a> cimag functions, <a href="#7.3.9.2">7.3.9.2</a>, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#G.6">G.6</a>
+ casin functions, <a href="#7.3.5.2">7.3.5.2</a>, <a href="#G.6">G.6</a> cimag type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
+ type-generic macro for, <a href="#7.24">7.24</a> cis function, <a href="#G.6">G.6</a>
+ casinh functions, <a href="#7.3.6.2">7.3.6.2</a>, <a href="#G.6.2.2">G.6.2.2</a> classification functions
+ type-generic macro for, <a href="#7.24">7.24</a> character, <a href="#7.4.1">7.4.1</a>
+ cast expression, <a href="#6.5.4">6.5.4</a> floating-point, <a href="#7.12.3">7.12.3</a>
+ cast operator (( )), <a href="#6.5.4">6.5.4</a> wide character, <a href="#7.29.2.1">7.29.2.1</a>
+ catan functions, <a href="#7.3.5.3">7.3.5.3</a>, <a href="#G.6">G.6</a> extensible, <a href="#7.29.2.2">7.29.2.2</a>
+ type-generic macro for, <a href="#7.24">7.24</a> clearerr function, <a href="#7.21.10.1">7.21.10.1</a>
+ catanh functions, <a href="#7.3.6.3">7.3.6.3</a>, <a href="#G.6.2.3">G.6.2.3</a> clgamma function, <a href="#7.30.1">7.30.1</a>
+ type-generic macro for, <a href="#7.24">7.24</a> clock function, <a href="#7.26.2.1">7.26.2.1</a>
+ cbrt functions, <a href="#7.12.7.1">7.12.7.1</a>, <a href="#F.10.4.1">F.10.4.1</a> clock_t type, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.1">7.26.2.1</a>
+ cbrt type-generic macro, <a href="#7.24">7.24</a> CLOCKS_PER_SEC macro, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.1">7.26.2.1</a>
+ ccos functions, <a href="#7.3.5.4">7.3.5.4</a>, <a href="#G.6">G.6</a> clog functions, <a href="#7.3.7.2">7.3.7.2</a>, <a href="#G.6.3.2">G.6.3.2</a>
+<!--page 676 indent 0-->
+ type-generic macro for, <a href="#7.24">7.24</a> string, <a href="#7.23.3">7.23.3</a>, <a href="#K.3.7.2">K.3.7.2</a>
+ clog10 function, <a href="#7.30.1">7.30.1</a> wide string, <a href="#7.28.4.3">7.28.4.3</a>, <a href="#K.3.9.2.2">K.3.9.2.2</a>
+ clog1p function, <a href="#7.30.1">7.30.1</a> concatenation, preprocessing, see preprocessing
+ clog2 function, <a href="#7.30.1">7.30.1</a> concatenation
+ CMPLX macros, <a href="#7.3.9.3">7.3.9.3</a> conceptual models, <a href="#5.1">5.1</a>
+ cnd_broadcast function, <a href="#7.25.3.1">7.25.3.1</a>, <a href="#7.25.3.5">7.25.3.5</a>, conditional features, <a href="#4">4</a>, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.10.8.3">6.10.8.3</a>,
+ <a href="#7.25.3.6">7.25.3.6</a> <a href="#7.1.2">7.1.2</a>, <a href="#F.1">F.1</a>, <a href="#G.1">G.1</a>, <a href="#K.2">K.2</a>, <a href="#L.1">L.1</a>
+ cnd_destroy function, <a href="#7.25.3.2">7.25.3.2</a> conditional inclusion, <a href="#6.10.1">6.10.1</a>
+ cnd_init function, <a href="#7.25.3.3">7.25.3.3</a> conditional operator (? :), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.15">6.5.15</a>
+ cnd_signal function, <a href="#7.25.3.4">7.25.3.4</a>, <a href="#7.25.3.5">7.25.3.5</a>, conflict, <a href="#5.1.2.4">5.1.2.4</a>
+ <a href="#7.25.3.6">7.25.3.6</a> conformance, <a href="#4">4</a>
+ cnd_t type, <a href="#7.25.1">7.25.1</a> conj functions, <a href="#7.3.9.4">7.3.9.4</a>, <a href="#G.6">G.6</a>
+ cnd_timedwait function, <a href="#7.25.3.5">7.25.3.5</a> conj type-generic macro, <a href="#7.24">7.24</a>
+ cnd_wait function, <a href="#7.25.3.3">7.25.3.3</a>, <a href="#7.25.3.6">7.25.3.6</a> const type qualifier, <a href="#6.7.3">6.7.3</a>
+ collating sequences, <a href="#5.2.1">5.2.1</a> const-qualified type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.7.3">6.7.3</a>
+ colon punctuator (:), <a href="#6.7.2.1">6.7.2.1</a> constant expression, <a href="#6.6">6.6</a>, <a href="#F.8.4">F.8.4</a>
+ comma operator (,), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.17">6.5.17</a> constants, <a href="#6.4.4">6.4.4</a>
+ comma punctuator (,), <a href="#6.5.2">6.5.2</a>, <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.7.2.2">6.7.2.2</a>, as primary expression, <a href="#6.5.1">6.5.1</a>
+ <a href="#6.7.2.3">6.7.2.3</a>, <a href="#6.7.9">6.7.9</a> character, <a href="#6.4.4.4">6.4.4.4</a>
+ command processor, <a href="#7.22.4.8">7.22.4.8</a> enumeration, <a href="#6.2.1">6.2.1</a>, <a href="#6.4.4.3">6.4.4.3</a>
+ comment delimiters (/* */ and //), <a href="#6.4.9">6.4.9</a> floating, <a href="#6.4.4.2">6.4.4.2</a>
+ comments, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>, <a href="#6.4.9">6.4.9</a> hexadecimal, <a href="#6.4.4.1">6.4.4.1</a>
+ common extensions, <a href="#J.5">J.5</a> integer, <a href="#6.4.4.1">6.4.4.1</a>
+ common initial sequence, <a href="#6.5.2.3">6.5.2.3</a> octal, <a href="#6.4.4.1">6.4.4.1</a>
+ common real type, <a href="#6.3.1.8">6.3.1.8</a> constraint, <a href="#3.8">3.8</a>, <a href="#4">4</a>
+ common warnings, <a href="#I">I</a> constraint_handler_t type, <a href="#K.3.6">K.3.6</a>
+ comparison functions, <a href="#7.22.5">7.22.5</a>, <a href="#7.22.5.1">7.22.5.1</a>, <a href="#7.22.5.2">7.22.5.2</a>, consume operation, <a href="#5.1.2.4">5.1.2.4</a>
+ <a href="#K.3.6.3">K.3.6.3</a>, <a href="#K.3.6.3.1">K.3.6.3.1</a>, <a href="#K.3.6.3.2">K.3.6.3.2</a> content of structure/union/enumeration, <a href="#6.7.2.3">6.7.2.3</a>
+ string, <a href="#7.23.4">7.23.4</a> contiguity of allocated storage, <a href="#7.22.3">7.22.3</a>
+ wide string, <a href="#7.28.4.4">7.28.4.4</a> continue statement, <a href="#6.8.6.2">6.8.6.2</a>
+ comparison macros, <a href="#7.12.14">7.12.14</a> contracted expression, <a href="#6.5">6.5</a>, <a href="#7.12.2">7.12.2</a>, <a href="#F.7">F.7</a>
+ comparison, pointer, <a href="#6.5.8">6.5.8</a> control character, <a href="#5.2.1">5.2.1</a>, <a href="#7.4">7.4</a>
+ compatible type, <a href="#6.2.7">6.2.7</a>, <a href="#6.7.2">6.7.2</a>, <a href="#6.7.3">6.7.3</a>, <a href="#6.7.6">6.7.6</a> control wide character, <a href="#7.29.2">7.29.2</a>
+ compl macro, <a href="#7.9">7.9</a> conversion, <a href="#6.3">6.3</a>
+ complement operator (~), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.3.3">6.5.3.3</a> arithmetic operands, <a href="#6.3.1">6.3.1</a>
+ complete type, <a href="#6.2.5">6.2.5</a> array argument, <a href="#6.9.1">6.9.1</a>
+ complex macro, <a href="#7.3.1">7.3.1</a> array parameter, <a href="#6.9.1">6.9.1</a>
+ complex numbers, <a href="#6.2.5">6.2.5</a>, <a href="#G">G</a> arrays, <a href="#6.3.2.1">6.3.2.1</a>
+ complex type conversion, <a href="#6.3.1.6">6.3.1.6</a>, <a href="#6.3.1.7">6.3.1.7</a> boolean, <a href="#6.3.1.2">6.3.1.2</a>
+ complex type domain, <a href="#6.2.5">6.2.5</a> boolean, characters, and integers, <a href="#6.3.1.1">6.3.1.1</a>
+ complex types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#G">G</a> by assignment, <a href="#6.5.16.1">6.5.16.1</a>
+ complex.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, by return statement, <a href="#6.8.6.4">6.8.6.4</a>
+ <a href="#7.3">7.3</a>, <a href="#7.24">7.24</a>, <a href="#7.30.1">7.30.1</a>, <a href="#G.6">G.6</a>, <a href="#J.5.17">J.5.17</a> complex types, <a href="#6.3.1.6">6.3.1.6</a>
+ compliance, see conformance explicit, <a href="#6.3">6.3</a>
+ components of time, <a href="#7.26.1">7.26.1</a>, <a href="#K.3.8.1">K.3.8.1</a> function, <a href="#6.3.2.1">6.3.2.1</a>
+ composite type, <a href="#6.2.7">6.2.7</a> function argument, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.9.1">6.9.1</a>
+ compound assignment, <a href="#6.5.16.2">6.5.16.2</a> function designators, <a href="#6.3.2.1">6.3.2.1</a>
+ compound literals, <a href="#6.5.2.5">6.5.2.5</a> function parameter, <a href="#6.9.1">6.9.1</a>
+ compound statement, <a href="#6.8.2">6.8.2</a> imaginary, <a href="#G.4.1">G.4.1</a>
+ compound-literal operator (( ){ }), <a href="#6.5.2.5">6.5.2.5</a> imaginary and complex, <a href="#G.4.3">G.4.3</a>
+ concatenation functions implicit, <a href="#6.3">6.3</a>
+<!--page 677 indent 0-->
+ lvalues, <a href="#6.3.2.1">6.3.2.1</a> csinh functions, <a href="#7.3.6.5">7.3.6.5</a>, <a href="#G.6.2.5">G.6.2.5</a>
+ pointer, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a> type-generic macro for, <a href="#7.24">7.24</a>
+ real and complex, <a href="#6.3.1.7">6.3.1.7</a> csqrt functions, <a href="#7.3.8.3">7.3.8.3</a>, <a href="#G.6.4.2">G.6.4.2</a>
+ real and imaginary, <a href="#G.4.2">G.4.2</a> type-generic macro for, <a href="#7.24">7.24</a>
+ real floating and integer, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#F.3">F.3</a>, <a href="#F.4">F.4</a> ctan functions, <a href="#7.3.5.6">7.3.5.6</a>, <a href="#G.6">G.6</a>
+ real floating types, <a href="#6.3.1.5">6.3.1.5</a>, <a href="#F.3">F.3</a> type-generic macro for, <a href="#7.24">7.24</a>
+ signed and unsigned integers, <a href="#6.3.1.3">6.3.1.3</a> ctanh functions, <a href="#7.3.6.6">7.3.6.6</a>, <a href="#G.6.2.6">G.6.2.6</a>
+ usual arithmetic, see usual arithmetic type-generic macro for, <a href="#7.24">7.24</a>
+ conversions ctgamma function, <a href="#7.30.1">7.30.1</a>
+ void type, <a href="#6.3.2.2">6.3.2.2</a> ctime function, <a href="#7.26.3.2">7.26.3.2</a>
+ conversion functions ctime_s function, <a href="#K.3.8.2">K.3.8.2</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a>
+ multibyte/wide character, <a href="#7.22.7">7.22.7</a>, <a href="#K.3.6.4">K.3.6.4</a> ctype.h header, <a href="#7.4">7.4</a>, <a href="#7.30.2">7.30.2</a>
+ extended, <a href="#7.28.6">7.28.6</a>, <a href="#K.3.9.3">K.3.9.3</a> current object, <a href="#6.7.9">6.7.9</a>
+ restartable, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a> CX_LIMITED_RANGE pragma, <a href="#6.10.6">6.10.6</a>, <a href="#7.3.4">7.3.4</a>
+ multibyte/wide string, <a href="#7.22.8">7.22.8</a>, <a href="#K.3.6.5">K.3.6.5</a>
+ restartable, <a href="#7.28.6.4">7.28.6.4</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a> data race, <a href="#5.1.2.4">5.1.2.4</a>, <a href="#7.1.4">7.1.4</a>, <a href="#7.22.2.1">7.22.2.1</a>, <a href="#7.22.4.6">7.22.4.6</a>,
+ numeric, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1">7.22.1</a> <a href="#7.23.5.8">7.23.5.8</a>, <a href="#7.23.6.2">7.23.6.2</a>, <a href="#7.26.3">7.26.3</a>, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>,
+ wide string, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.28.4.1">7.28.4.1</a> <a href="#7.28.6.4">7.28.6.4</a>
+ single byte/wide character, <a href="#7.28.6.1">7.28.6.1</a> data stream, see streams
+ time, <a href="#7.26.3">7.26.3</a>, <a href="#K.3.8.2">K.3.8.2</a> date and time header, <a href="#7.26">7.26</a>, <a href="#K.3.8">K.3.8</a>
+ wide character, <a href="#7.28.5">7.28.5</a> Daylight Saving Time, <a href="#7.26.1">7.26.1</a>
+ conversion specifier, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, DBL_DECIMAL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.28.2.2">7.28.2.2</a> DBL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ conversion state, <a href="#7.22.7">7.22.7</a>, <a href="#7.27.1">7.27.1</a>, <a href="#7.27.1.1">7.27.1.1</a>, DBL_EPSILON macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.27.1.2">7.27.1.2</a>, <a href="#7.27.1.3">7.27.1.3</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.6">7.28.6</a>, DBL_HAS_SUBNORM macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.28.6.2.1">7.28.6.2.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#7.28.6.3.2">7.28.6.3.2</a>, <a href="#7.28.6.3.3">7.28.6.3.3</a>, DBL_MANT_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.28.6.4">7.28.6.4</a>, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>, <a href="#K.3.6.4">K.3.6.4</a>, DBL_MAX macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#K.3.9.3.1">K.3.9.3.1</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a>, <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a>, DBL_MAX_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a> DBL_MAX_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ conversion state functions, <a href="#7.28.6.2">7.28.6.2</a> DBL_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ copying functions DBL_MIN_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ string, <a href="#7.23.2">7.23.2</a>, <a href="#K.3.7.1">K.3.7.1</a> DBL_MIN_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ wide string, <a href="#7.28.4.2">7.28.4.2</a>, <a href="#K.3.9.2.1">K.3.9.2.1</a> DBL_TRUE_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ copysign functions, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#7.12.11.1">7.12.11.1</a>, <a href="#F.3">F.3</a>, decimal constant, <a href="#6.4.4.1">6.4.4.1</a>
+ <a href="#F.10.8.1">F.10.8.1</a> decimal digit, <a href="#5.2.1">5.2.1</a>
+ copysign type-generic macro, <a href="#7.24">7.24</a> decimal-point character, <a href="#7.1.1">7.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
+ correctly rounded result, <a href="#3.9">3.9</a> DECIMAL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.6.1">7.21.6.1</a>,
+ corresponding real type, <a href="#6.2.5">6.2.5</a> <a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#F.5">F.5</a>
+ cos functions, <a href="#7.12.4.5">7.12.4.5</a>, <a href="#F.10.1.5">F.10.1.5</a> declaration specifiers, <a href="#6.7">6.7</a>
+ cos type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> declarations, <a href="#6.7">6.7</a>
+ cosh functions, <a href="#7.12.5.4">7.12.5.4</a>, <a href="#F.10.2.4">F.10.2.4</a> function, <a href="#6.7.6.3">6.7.6.3</a>
+ cosh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> pointer, <a href="#6.7.6.1">6.7.6.1</a>
+ cpow functions, <a href="#7.3.8.2">7.3.8.2</a>, <a href="#G.6.4.1">G.6.4.1</a> structure/union, <a href="#6.7.2.1">6.7.2.1</a>
+ type-generic macro for, <a href="#7.24">7.24</a> typedef, <a href="#6.7.8">6.7.8</a>
+ cproj functions, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#G.6">G.6</a> declarator, <a href="#6.7.6">6.7.6</a>
+ cproj type-generic macro, <a href="#7.24">7.24</a> abstract, <a href="#6.7.7">6.7.7</a>
+ creal functions, <a href="#7.3.9.6">7.3.9.6</a>, <a href="#G.6">G.6</a> declarator type derivation, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.6">6.7.6</a>
+ creal type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> decrement operators, see arithmetic operators,
+ critical undefined behavior, <a href="#L.2.3">L.2.3</a> increment and decrement
+ csin functions, <a href="#7.3.5.5">7.3.5.5</a>, <a href="#G.6">G.6</a> default argument promotions, <a href="#6.5.2.2">6.5.2.2</a>
+ type-generic macro for, <a href="#7.24">7.24</a> default initialization, <a href="#6.7.9">6.7.9</a>
+<!--page 678 indent 0-->
+ default label, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a> elif preprocessing directive, <a href="#6.10.1">6.10.1</a>
+ define preprocessing directive, <a href="#6.10.3">6.10.3</a> ellipsis punctuator (...), <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.10.3">6.10.3</a>
+ defined operator, <a href="#6.10.1">6.10.1</a>, <a href="#6.10.8">6.10.8</a> else preprocessing directive, <a href="#6.10.1">6.10.1</a>
+ definition, <a href="#6.7">6.7</a> else statement, <a href="#6.8.4.1">6.8.4.1</a>
+ function, <a href="#6.9.1">6.9.1</a> empty statement, <a href="#6.8.3">6.8.3</a>
+ dependency-ordered before, <a href="#5.1.2.4">5.1.2.4</a> encoding error, <a href="#7.21.3">7.21.3</a>, <a href="#7.27.1.1">7.27.1.1</a>, <a href="#7.27.1.2">7.27.1.2</a>,
+ derived declarator types, <a href="#6.2.5">6.2.5</a> <a href="#7.27.1.3">7.27.1.3</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.3.1">7.28.3.1</a>, <a href="#7.28.3.3">7.28.3.3</a>,
+ derived types, <a href="#6.2.5">6.2.5</a> <a href="#7.28.6.3.2">7.28.6.3.2</a>, <a href="#7.28.6.3.3">7.28.6.3.3</a>, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>,
+ designated initializer, <a href="#6.7.9">6.7.9</a> <a href="#K.3.6.5.1">K.3.6.5.1</a>, <a href="#K.3.6.5.2">K.3.6.5.2</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a>, <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a>,
+ destringizing, <a href="#6.10.9">6.10.9</a> <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a>
+ device input/output, <a href="#5.1.2.3">5.1.2.3</a> end-of-file, <a href="#7.28.1">7.28.1</a>
+ diagnostic message, <a href="#3.10">3.10</a>, <a href="#5.1.1.3">5.1.1.3</a> end-of-file indicator, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.1">7.21.7.1</a>,
+ diagnostics, <a href="#5.1.1.3">5.1.1.3</a> <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.7.6">7.21.7.6</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.2">7.21.9.2</a>,
+ diagnostics header, <a href="#7.2">7.2</a> <a href="#7.21.9.3">7.21.9.3</a>, <a href="#7.21.10.1">7.21.10.1</a>, <a href="#7.21.10.2">7.21.10.2</a>, <a href="#7.28.3.1">7.28.3.1</a>,
+ difftime function, <a href="#7.26.2.2">7.26.2.2</a> <a href="#7.28.3.10">7.28.3.10</a>
+ digit, <a href="#5.2.1">5.2.1</a>, <a href="#7.4">7.4</a> end-of-file macro, see EOF macro
+ digraphs, <a href="#6.4.6">6.4.6</a> end-of-line indicator, <a href="#5.2.1">5.2.1</a>
+ direct input/output functions, <a href="#7.21.8">7.21.8</a> endif preprocessing directive, <a href="#6.10.1">6.10.1</a>
+ display device, <a href="#5.2.2">5.2.2</a> enum type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>, <a href="#6.7.2.2">6.7.2.2</a>
+ div function, <a href="#7.22.6.2">7.22.6.2</a> enumerated type, <a href="#6.2.5">6.2.5</a>
+ div_t type, <a href="#7.22">7.22</a> enumeration, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2.2">6.7.2.2</a>
+ division assignment operator (/=), <a href="#6.5.16.2">6.5.16.2</a> enumeration constant, <a href="#6.2.1">6.2.1</a>, <a href="#6.4.4.3">6.4.4.3</a>
+ division operator (/), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#F.3">F.3</a>, <a href="#G.5.1">G.5.1</a> enumeration content, <a href="#6.7.2.3">6.7.2.3</a>
+ do statement, <a href="#6.8.5.2">6.8.5.2</a> enumeration members, <a href="#6.7.2.2">6.7.2.2</a>
+ documentation of implementation, <a href="#4">4</a> enumeration specifiers, <a href="#6.7.2.2">6.7.2.2</a>
+ domain error, <a href="#7.12.1">7.12.1</a>, <a href="#7.12.4.1">7.12.4.1</a>, <a href="#7.12.4.2">7.12.4.2</a>, <a href="#7.12.4.4">7.12.4.4</a>, enumeration tag, <a href="#6.2.3">6.2.3</a>, <a href="#6.7.2.3">6.7.2.3</a>
+ <a href="#7.12.5.1">7.12.5.1</a>, <a href="#7.12.5.3">7.12.5.3</a>, <a href="#7.12.6.5">7.12.6.5</a>, <a href="#7.12.6.7">7.12.6.7</a>, enumerator, <a href="#6.7.2.2">6.7.2.2</a>
+ <a href="#7.12.6.8">7.12.6.8</a>, <a href="#7.12.6.9">7.12.6.9</a>, <a href="#7.12.6.10">7.12.6.10</a>, <a href="#7.12.6.11">7.12.6.11</a>, environment, <a href="#5">5</a>
+ <a href="#7.12.7.4">7.12.7.4</a>, <a href="#7.12.7.5">7.12.7.5</a>, <a href="#7.12.8.4">7.12.8.4</a>, <a href="#7.12.9.5">7.12.9.5</a>, environment functions, <a href="#7.22.4">7.22.4</a>, <a href="#K.3.6.2">K.3.6.2</a>
+ <a href="#7.12.9.7">7.12.9.7</a>, <a href="#7.12.10.1">7.12.10.1</a>, <a href="#7.12.10.2">7.12.10.2</a>, <a href="#7.12.10.3">7.12.10.3</a> environment list, <a href="#7.22.4.6">7.22.4.6</a>, <a href="#K.3.6.2.1">K.3.6.2.1</a>
+ dot operator (.), <a href="#6.5.2.3">6.5.2.3</a> environmental considerations, <a href="#5.2">5.2</a>
+ double _Complex type, <a href="#6.2.5">6.2.5</a> environmental limits, <a href="#5.2.4">5.2.4</a>, <a href="#7.13.1.1">7.13.1.1</a>, <a href="#7.21.2">7.21.2</a>,
+ double _Complex type conversion, <a href="#6.3.1.6">6.3.1.6</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.4.4">7.21.4.4</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.22.2.1">7.22.2.1</a>, <a href="#7.22.4.2">7.22.4.2</a>,
+ <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a> <a href="#7.22.4.3">7.22.4.3</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a>
+ double _Imaginary type, <a href="#G.2">G.2</a> EOF macro, <a href="#7.4">7.4</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.1">7.21.5.1</a>, <a href="#7.21.5.2">7.21.5.2</a>,
+ double type, <a href="#6.2.5">6.2.5</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.21.6.7">7.21.6.7</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#7.21.6.11">7.21.6.11</a>,
+ <a href="#7.28.2.2">7.28.2.2</a>, <a href="#F.2">F.2</a> <a href="#7.21.6.14">7.21.6.14</a>, <a href="#7.21.7.1">7.21.7.1</a>, <a href="#7.21.7.3">7.21.7.3</a>, <a href="#7.21.7.4">7.21.7.4</a>,
+ double type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>, <a href="#6.3.1.7">6.3.1.7</a>, <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.7.6">7.21.7.6</a>, <a href="#7.21.7.8">7.21.7.8</a>, <a href="#7.21.7.9">7.21.7.9</a>,
+ <a href="#6.3.1.8">6.3.1.8</a> <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.28.1">7.28.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#7.28.2.4">7.28.2.4</a>,
+ double-precision arithmetic, <a href="#5.1.2.3">5.1.2.3</a> <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#7.28.2.12">7.28.2.12</a>,
+ double-quote escape sequence (\"), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.28.3.4">7.28.3.4</a>, <a href="#7.28.6.1.1">7.28.6.1.1</a>, <a href="#7.28.6.1.2">7.28.6.1.2</a>, <a href="#K.3.5.3.7">K.3.5.3.7</a>,
+ <a href="#6.4.5">6.4.5</a>, <a href="#6.10.9">6.10.9</a> <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>,
+ double_t type, <a href="#7.12">7.12</a>, <a href="#J.5.6">J.5.6</a> <a href="#K.3.9.1.5">K.3.9.1.5</a>, <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>,
+ <a href="#K.3.9.1.14">K.3.9.1.14</a>
+ EDOM macro, <a href="#7.5">7.5</a>, <a href="#7.12.1">7.12.1</a>, see also domain error equal-sign punctuator (=), <a href="#6.7">6.7</a>, <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.9">6.7.9</a>
+ effective type, <a href="#6.5">6.5</a> equal-to operator, see equality operator
+ EILSEQ macro, <a href="#7.5">7.5</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.27.1.1">7.27.1.1</a>, <a href="#7.27.1.2">7.27.1.2</a>, equality expressions, <a href="#6.5.9">6.5.9</a>
+ <a href="#7.27.1.3">7.27.1.3</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.3.1">7.28.3.1</a>, <a href="#7.28.3.3">7.28.3.3</a>, equality operator (==), <a href="#6.5.9">6.5.9</a>
+ <a href="#7.28.6.3.2">7.28.6.3.2</a>, <a href="#7.28.6.3.3">7.28.6.3.3</a>, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>, ERANGE macro, <a href="#7.5">7.5</a>, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.12.1">7.12.1</a>,
+ see also encoding error <a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>, see
+ element type, <a href="#6.2.5">6.2.5</a> also range error, pole error
+<!--page 679 indent 0-->
+ erf functions, <a href="#7.12.8.1">7.12.8.1</a>, <a href="#F.10.5.1">F.10.5.1</a> exp2 functions, <a href="#7.12.6.2">7.12.6.2</a>, <a href="#F.10.3.2">F.10.3.2</a>
+ erf type-generic macro, <a href="#7.24">7.24</a> exp2 type-generic macro, <a href="#7.24">7.24</a>
+ erfc functions, <a href="#7.12.8.2">7.12.8.2</a>, <a href="#F.10.5.2">F.10.5.2</a> explicit conversion, <a href="#6.3">6.3</a>
+ erfc type-generic macro, <a href="#7.24">7.24</a> expm1 functions, <a href="#7.12.6.3">7.12.6.3</a>, <a href="#F.10.3.3">F.10.3.3</a>
+ errno macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.3.2">7.3.2</a>, <a href="#7.5">7.5</a>, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, expm1 type-generic macro, <a href="#7.24">7.24</a>
+ <a href="#7.12.1">7.12.1</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.9.3">7.21.9.3</a>, <a href="#7.21.10.4">7.21.10.4</a>, exponent part, <a href="#6.4.4.2">6.4.4.2</a>
+ <a href="#7.22.1">7.22.1</a>, <a href="#7.22.1.3">7.22.1.3</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.23.6.2">7.23.6.2</a>, <a href="#7.27.1.1">7.27.1.1</a>, exponential functions
+ <a href="#7.27.1.2">7.27.1.2</a>, <a href="#7.27.1.3">7.27.1.3</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.3.1">7.28.3.1</a>, complex, <a href="#7.3.7">7.3.7</a>, <a href="#G.6.3">G.6.3</a>
+ <a href="#7.28.3.3">7.28.3.3</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>, <a href="#7.28.6.3.2">7.28.6.3.2</a>, real, <a href="#7.12.6">7.12.6</a>, <a href="#F.10.3">F.10.3</a>
+ <a href="#7.28.6.3.3">7.28.6.3.3</a>, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>, <a href="#J.5.17">J.5.17</a>, expression, <a href="#6.5">6.5</a>
+ <a href="#K.3.1.3">K.3.1.3</a>, <a href="#K.3.7.4.2">K.3.7.4.2</a> assignment, <a href="#6.5.16">6.5.16</a>
+ errno.h header, <a href="#7.5">7.5</a>, <a href="#7.30.3">7.30.3</a>, <a href="#K.3.2">K.3.2</a> cast, <a href="#6.5.4">6.5.4</a>
+ errno_t type, <a href="#K.3.2">K.3.2</a>, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.6">K.3.6</a>, <a href="#K.3.6.1.1">K.3.6.1.1</a>, constant, <a href="#6.6">6.6</a>
+ <a href="#K.3.7">K.3.7</a>, <a href="#K.3.8">K.3.8</a>, <a href="#K.3.9">K.3.9</a> evaluation, <a href="#5.1.2.3">5.1.2.3</a>
+ error full, <a href="#6.8">6.8</a>
+ domain, see domain error order of evaluation, see order of evaluation
+ encoding, see encoding error parenthesized, <a href="#6.5.1">6.5.1</a>
+ pole, see pole error primary, <a href="#6.5.1">6.5.1</a>
+ range, see range error unary, <a href="#6.5.3">6.5.3</a>
+ error conditions, <a href="#7.12.1">7.12.1</a> expression statement, <a href="#6.8.3">6.8.3</a>
+ error functions, <a href="#7.12.8">7.12.8</a>, <a href="#F.10.5">F.10.5</a> extended alignment, <a href="#6.2.8">6.2.8</a>
+ error indicator, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.1">7.21.7.1</a>, extended character set, <a href="#3.7.2">3.7.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#5.2.1.2">5.2.1.2</a>
+ <a href="#7.21.7.3">7.21.7.3</a>, <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.7.6">7.21.7.6</a>, <a href="#7.21.7.7">7.21.7.7</a>, extended characters, <a href="#5.2.1">5.2.1</a>
+ <a href="#7.21.7.8">7.21.7.8</a>, <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.21.10.1">7.21.10.1</a>, <a href="#7.21.10.3">7.21.10.3</a>, extended integer types, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.4.4.1">6.4.4.1</a>,
+ <a href="#7.28.3.1">7.28.3.1</a>, <a href="#7.28.3.3">7.28.3.3</a> <a href="#7.20">7.20</a>
+ error preprocessing directive, <a href="#4">4</a>, <a href="#6.10.5">6.10.5</a> extended multibyte/wide character conversion
+ error-handling functions, <a href="#7.21.10">7.21.10</a>, <a href="#7.23.6.2">7.23.6.2</a>, utilities, <a href="#7.28.6">7.28.6</a>, <a href="#K.3.9.3">K.3.9.3</a>
+ <a href="#K.3.7.4.2">K.3.7.4.2</a>, <a href="#K.3.7.4.3">K.3.7.4.3</a> extensible wide character case mapping functions,
+ escape character (\), <a href="#6.4.4.4">6.4.4.4</a> <a href="#7.29.3.2">7.29.3.2</a>
+ escape sequences, <a href="#5.2.1">5.2.1</a>, <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.11.4">6.11.4</a> extensible wide character classification functions,
+ evaluation format, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#7.12">7.12</a> <a href="#7.29.2.2">7.29.2.2</a>
+ evaluation method, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.5">6.5</a>, <a href="#F.8.5">F.8.5</a> extern storage-class specifier, <a href="#6.2.2">6.2.2</a>, <a href="#6.7.1">6.7.1</a>
+ evaluation of expression, <a href="#5.1.2.3">5.1.2.3</a> external definition, <a href="#6.9">6.9</a>
+ evaluation order, see order of evaluation external identifiers, underscore, <a href="#7.1.3">7.1.3</a>
+ exceptional condition, <a href="#6.5">6.5</a> external linkage, <a href="#6.2.2">6.2.2</a>
+ excess precision, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.8.6.4">6.8.6.4</a> external name, <a href="#6.4.2.1">6.4.2.1</a>
+ excess range, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.8.6.4">6.8.6.4</a> external object definitions, <a href="#6.9.2">6.9.2</a>
+ exclusive OR operators
+ bitwise (^), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.11">6.5.11</a> fabs functions, <a href="#7.12.7.2">7.12.7.2</a>, <a href="#F.3">F.3</a>, <a href="#F.10.4.2">F.10.4.2</a>
+ bitwise assignment (^=), <a href="#6.5.16.2">6.5.16.2</a> fabs type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
+ executable program, <a href="#5.1.1.1">5.1.1.1</a> false macro, <a href="#7.18">7.18</a>
+ execution character set, <a href="#5.2.1">5.2.1</a> fclose function, <a href="#7.21.5.1">7.21.5.1</a>
+ execution environment, <a href="#5">5</a>, <a href="#5.1.2">5.1.2</a>, see also fdim functions, <a href="#7.12.12.1">7.12.12.1</a>, <a href="#F.10.9.1">F.10.9.1</a>
+ environmental limits fdim type-generic macro, <a href="#7.24">7.24</a>
+ execution sequence, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.8">6.8</a> FE_ALL_EXCEPT macro, <a href="#7.6">7.6</a>
+ exit function, <a href="#5.1.2.2.3">5.1.2.2.3</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.22">7.22</a>, <a href="#7.22.4.4">7.22.4.4</a>, FE_DFL_ENV macro, <a href="#7.6">7.6</a>
+ <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a> FE_DIVBYZERO macro, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a>
+ EXIT_FAILURE macro, <a href="#7.22">7.22</a>, <a href="#7.22.4.4">7.22.4.4</a> FE_DOWNWARD macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a>
+ EXIT_SUCCESS macro, <a href="#7.22">7.22</a>, <a href="#7.22.4.4">7.22.4.4</a> FE_INEXACT macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a>
+ exp functions, <a href="#7.12.6.1">7.12.6.1</a>, <a href="#F.10.3.1">F.10.3.1</a> FE_INVALID macro, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a>
+ exp type-generic macro, <a href="#7.24">7.24</a> FE_OVERFLOW macro, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a>
+<!--page 680 indent 0-->
+ FE_TONEAREST macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> float _Complex type conversion, <a href="#6.3.1.6">6.3.1.6</a>,
+ FE_TOWARDZERO macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a>
+ FE_UNDERFLOW macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> float _Imaginary type, <a href="#G.2">G.2</a>
+ FE_UPWARD macro, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> float type, <a href="#6.2.5">6.2.5</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.7.2">6.7.2</a>, <a href="#F.2">F.2</a>
+ feclearexcept function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.1">7.6.2.1</a>, <a href="#F.3">F.3</a> float type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>, <a href="#6.3.1.7">6.3.1.7</a>,
+ fegetenv function, <a href="#7.6.4.1">7.6.4.1</a>, <a href="#7.6.4.3">7.6.4.3</a>, <a href="#7.6.4.4">7.6.4.4</a>, <a href="#F.3">F.3</a> <a href="#6.3.1.8">6.3.1.8</a>
+ fegetexceptflag function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.2">7.6.2.2</a>, <a href="#F.3">F.3</a> float.h header, <a href="#4">4</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.7">7.7</a>, <a href="#7.22.1.3">7.22.1.3</a>,
+ fegetround function, <a href="#7.6">7.6</a>, <a href="#7.6.3.1">7.6.3.1</a>, <a href="#F.3">F.3</a> <a href="#7.28.4.1.1">7.28.4.1.1</a>
+ feholdexcept function, <a href="#7.6.4.2">7.6.4.2</a>, <a href="#7.6.4.3">7.6.4.3</a>, float_t type, <a href="#7.12">7.12</a>, <a href="#J.5.6">J.5.6</a>
+ <a href="#7.6.4.4">7.6.4.4</a>, <a href="#F.3">F.3</a> floating constant, <a href="#6.4.4.2">6.4.4.2</a>
+ fence, <a href="#5.1.2.4">5.1.2.4</a> floating suffix, f or <a href="#F">F</a>, <a href="#6.4.4.2">6.4.4.2</a>
+ fences, <a href="#7.17.4">7.17.4</a> floating type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>, <a href="#6.3.1.7">6.3.1.7</a>,
+ fenv.h header, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F">F</a>, <a href="#H">H</a> <a href="#F.3">F.3</a>, <a href="#F.4">F.4</a>
+ FENV_ACCESS pragma, <a href="#6.10.6">6.10.6</a>, <a href="#7.6.1">7.6.1</a>, <a href="#F.8">F.8</a>, <a href="#F.9">F.9</a>, floating types, <a href="#6.2.5">6.2.5</a>, <a href="#6.11.1">6.11.1</a>
+ <a href="#F.10">F.10</a> floating-point accuracy, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.5">6.5</a>,
+ fenv_t type, <a href="#7.6">7.6</a> <a href="#7.22.1.3">7.22.1.3</a>, <a href="#F.5">F.5</a>, see also contracted expression
+ feof function, <a href="#7.21.10.2">7.21.10.2</a> floating-point arithmetic functions, <a href="#7.12">7.12</a>, <a href="#F.10">F.10</a>
+ feraiseexcept function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.3">7.6.2.3</a>, <a href="#F.3">F.3</a> floating-point classification functions, <a href="#7.12.3">7.12.3</a>
+ ferror function, <a href="#7.21.10.3">7.21.10.3</a> floating-point control mode, <a href="#7.6">7.6</a>, <a href="#F.8.6">F.8.6</a>
+ fesetenv function, <a href="#7.6.4.3">7.6.4.3</a>, <a href="#F.3">F.3</a> floating-point environment, <a href="#7.6">7.6</a>, <a href="#F.8">F.8</a>, <a href="#F.8.6">F.8.6</a>
+ fesetexceptflag function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.4">7.6.2.4</a>, <a href="#F.3">F.3</a> floating-point exception, <a href="#7.6">7.6</a>, <a href="#7.6.2">7.6.2</a>, <a href="#F.10">F.10</a>
+ fesetround function, <a href="#7.6">7.6</a>, <a href="#7.6.3.2">7.6.3.2</a>, <a href="#F.3">F.3</a> floating-point number, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.2.5">6.2.5</a>
+ fetestexcept function, <a href="#7.6.2">7.6.2</a>, <a href="#7.6.2.5">7.6.2.5</a>, <a href="#F.3">F.3</a> floating-point rounding mode, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ feupdateenv function, <a href="#7.6.4.2">7.6.4.2</a>, <a href="#7.6.4.4">7.6.4.4</a>, <a href="#F.3">F.3</a> floating-point status flag, <a href="#7.6">7.6</a>, <a href="#F.8.6">F.8.6</a>
+ fexcept_t type, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a> floor functions, <a href="#7.12.9.2">7.12.9.2</a>, <a href="#F.10.6.2">F.10.6.2</a>
+ fflush function, <a href="#7.21.5.2">7.21.5.2</a>, <a href="#7.21.5.3">7.21.5.3</a> floor type-generic macro, <a href="#7.24">7.24</a>
+ fgetc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.7.1">7.21.7.1</a>, FLT_DECIMAL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.8.1">7.21.8.1</a> FLT_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ fgetpos function, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.9.1">7.21.9.1</a>, <a href="#7.21.9.3">7.21.9.3</a> FLT_EPSILON macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ fgets function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.2">7.21.7.2</a>, <a href="#K.3.5.4.1">K.3.5.4.1</a> FLT_EVAL_METHOD macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.6">6.6</a>, <a href="#7.12">7.12</a>,
+ fgetwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.28.3.1">7.28.3.1</a>, <a href="#F.10.11">F.10.11</a>
+ <a href="#7.28.3.6">7.28.3.6</a> FLT_HAS_SUBNORM macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ fgetws function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.2">7.28.3.2</a> FLT_MANT_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ field width, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a> FLT_MAX macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ file, <a href="#7.21.3">7.21.3</a> FLT_MAX_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ access functions, <a href="#7.21.5">7.21.5</a>, <a href="#K.3.5.2">K.3.5.2</a> FLT_MAX_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ name, <a href="#7.21.3">7.21.3</a> FLT_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ operations, <a href="#7.21.4">7.21.4</a>, <a href="#K.3.5.1">K.3.5.1</a> FLT_MIN_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ position indicator, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>, FLT_MIN_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.1">7.21.7.1</a>, <a href="#7.21.7.3">7.21.7.3</a>, <a href="#7.21.7.10">7.21.7.10</a>, FLT_RADIX macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.22.1.3">7.22.1.3</a>,
+ <a href="#7.21.8.1">7.21.8.1</a>, <a href="#7.21.8.2">7.21.8.2</a>, <a href="#7.21.9.1">7.21.9.1</a>, <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.4.1.1">7.28.4.1.1</a>
+ <a href="#7.21.9.3">7.21.9.3</a>, <a href="#7.21.9.4">7.21.9.4</a>, <a href="#7.21.9.5">7.21.9.5</a>, <a href="#7.28.3.1">7.28.3.1</a>, FLT_ROUNDS macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.6">7.6</a>, <a href="#F.3">F.3</a>
+ <a href="#7.28.3.3">7.28.3.3</a>, <a href="#7.28.3.10">7.28.3.10</a> FLT_TRUE_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ positioning functions, <a href="#7.21.9">7.21.9</a> fma functions, <a href="#7.12">7.12</a>, <a href="#7.12.13.1">7.12.13.1</a>, <a href="#F.10.10.1">F.10.10.1</a>
+ file scope, <a href="#6.2.1">6.2.1</a>, <a href="#6.9">6.9</a> fma type-generic macro, <a href="#7.24">7.24</a>
+ FILE type, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> fmax functions, <a href="#7.12.12.2">7.12.12.2</a>, <a href="#F.10.9.2">F.10.9.2</a>
+ FILENAME_MAX macro, <a href="#7.21.1">7.21.1</a> fmax type-generic macro, <a href="#7.24">7.24</a>
+ flags, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a>, see also floating-point fmin functions, <a href="#7.12.12.3">7.12.12.3</a>, <a href="#F.10.9.3">F.10.9.3</a>
+ status flag fmin type-generic macro, <a href="#7.24">7.24</a>
+ flexible array member, <a href="#6.7.2.1">6.7.2.1</a> fmod functions, <a href="#7.12.10.1">7.12.10.1</a>, <a href="#F.10.7.1">F.10.7.1</a>
+ float _Complex type, <a href="#6.2.5">6.2.5</a> fmod type-generic macro, <a href="#7.24">7.24</a>
+<!--page 681 indent 0-->
+ fopen function, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.5.4">7.21.5.4</a>, <a href="#K.3.5.2.1">K.3.5.2.1</a> <a href="#K.3.5.3.7">K.3.5.3.7</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>
+ FOPEN_MAX macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.4.3">7.21.4.3</a>, fseek function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.10">7.21.7.10</a>,
+ <a href="#K.3.5.1.1">K.3.5.1.1</a> <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.21.9.4">7.21.9.4</a>, <a href="#7.21.9.5">7.21.9.5</a>, <a href="#7.28.3.10">7.28.3.10</a>
+ fopen_s function, <a href="#K.3.5.1.1">K.3.5.1.1</a>, <a href="#K.3.5.2.1">K.3.5.2.1</a>, fsetpos function, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.10">7.21.7.10</a>,
+ <a href="#K.3.5.2.2">K.3.5.2.2</a> <a href="#7.21.9.1">7.21.9.1</a>, <a href="#7.21.9.3">7.21.9.3</a>, <a href="#7.28.3.10">7.28.3.10</a>
+ for statement, <a href="#6.8.5">6.8.5</a>, <a href="#6.8.5.3">6.8.5.3</a> ftell function, <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.21.9.4">7.21.9.4</a>
+ form-feed character, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a> full declarator, <a href="#6.7.6">6.7.6</a>
+ form-feed escape sequence (\f), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, full expression, <a href="#6.8">6.8</a>
+ <a href="#7.4.1.10">7.4.1.10</a> fully buffered stream, <a href="#7.21.3">7.21.3</a>
+ formal argument (deprecated), <a href="#3.16">3.16</a> function
+ formal parameter, <a href="#3.16">3.16</a> argument, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.9.1">6.9.1</a>
+ formatted input/output functions, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.21.6">7.21.6</a>, body, <a href="#6.9.1">6.9.1</a>
+ <a href="#K.3.5.3">K.3.5.3</a> call, <a href="#6.5.2.2">6.5.2.2</a>
+ wide character, <a href="#7.28.2">7.28.2</a>, <a href="#K.3.9.1">K.3.9.1</a> library, <a href="#7.1.4">7.1.4</a>
+ fortran keyword, <a href="#J.5.9">J.5.9</a> declarator, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.11.6">6.11.6</a>
+ forward reference, <a href="#3.11">3.11</a> definition, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.9.1">6.9.1</a>, <a href="#6.11.7">6.11.7</a>
+ FP_CONTRACT pragma, <a href="#6.5">6.5</a>, <a href="#6.10.6">6.10.6</a>, <a href="#7.12.2">7.12.2</a>, see designator, <a href="#6.3.2.1">6.3.2.1</a>
+ also contracted expression image, <a href="#5.2.3">5.2.3</a>
+ FP_FAST_FMA macro, <a href="#7.12">7.12</a> inline, <a href="#6.7.4">6.7.4</a>
+ FP_FAST_FMAF macro, <a href="#7.12">7.12</a> library, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#7.1.4">7.1.4</a>
+ FP_FAST_FMAL macro, <a href="#7.12">7.12</a> name length, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.11.3">6.11.3</a>
+ FP_ILOGB0 macro, <a href="#7.12">7.12</a>, <a href="#7.12.6.5">7.12.6.5</a> no-return, <a href="#6.7.4">6.7.4</a>
+ FP_ILOGBNAN macro, <a href="#7.12">7.12</a>, <a href="#7.12.6.5">7.12.6.5</a> parameter, <a href="#5.1.2.2.1">5.1.2.2.1</a>, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7">6.7</a>, <a href="#6.9.1">6.9.1</a>
+ FP_INFINITE macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> prototype, <a href="#5.1.2.2.1">5.1.2.2.1</a>, <a href="#6.2.1">6.2.1</a>, <a href="#6.2.7">6.2.7</a>, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7">6.7</a>,
+ FP_NAN macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.9.1">6.9.1</a>, <a href="#6.11.6">6.11.6</a>, <a href="#6.11.7">6.11.7</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.12">7.12</a>
+ FP_NORMAL macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> prototype scope, <a href="#6.2.1">6.2.1</a>, <a href="#6.7.6.2">6.7.6.2</a>
+ FP_SUBNORMAL macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> recursive call, <a href="#6.5.2.2">6.5.2.2</a>
+ FP_ZERO macro, <a href="#7.12">7.12</a>, <a href="#F.3">F.3</a> return, <a href="#6.8.6.4">6.8.6.4</a>, <a href="#F.6">F.6</a>
+ fpclassify macro, <a href="#7.12.3.1">7.12.3.1</a>, <a href="#F.3">F.3</a> scope, <a href="#6.2.1">6.2.1</a>
+ fpos_t type, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a> type, <a href="#6.2.5">6.2.5</a>
+ fprintf function, <a href="#7.8.1">7.8.1</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.1">7.21.6.1</a>, type conversion, <a href="#6.3.2.1">6.3.2.1</a>
+ <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.21.6.3">7.21.6.3</a>, <a href="#7.21.6.5">7.21.6.5</a>, <a href="#7.21.6.6">7.21.6.6</a>, function specifiers, <a href="#6.7.4">6.7.4</a>
+ <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#F.3">F.3</a>, <a href="#K.3.5.3.1">K.3.5.3.1</a> function type, <a href="#6.2.5">6.2.5</a>
+ fprintf_s function, <a href="#K.3.5.3.1">K.3.5.3.1</a> function-call operator (( )), <a href="#6.5.2.2">6.5.2.2</a>
+ fputc function, <a href="#5.2.2">5.2.2</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.7.3">7.21.7.3</a>, function-like macro, <a href="#6.10.3">6.10.3</a>
+ <a href="#7.21.7.7">7.21.7.7</a>, <a href="#7.21.8.2">7.21.8.2</a> fundamental alignment, <a href="#6.2.8">6.2.8</a>
+ fputs function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.4">7.21.7.4</a> future directions
+ fputwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.28.3.3">7.28.3.3</a>, language, <a href="#6.11">6.11</a>
+ <a href="#7.28.3.8">7.28.3.8</a> library, <a href="#7.30">7.30</a>
+ fputws function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.4">7.28.3.4</a> fwide function, <a href="#7.21.2">7.21.2</a>, <a href="#7.28.3.5">7.28.3.5</a>
+ fread function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.8.1">7.21.8.1</a> fwprintf function, <a href="#7.8.1">7.8.1</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.2">7.21.6.2</a>,
+ free function, <a href="#7.22.3.3">7.22.3.3</a>, <a href="#7.22.3.5">7.22.3.5</a> <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#7.28.2.3">7.28.2.3</a>, <a href="#7.28.2.5">7.28.2.5</a>,
+ freestanding execution environment, <a href="#4">4</a>, <a href="#5.1.2">5.1.2</a>, <a href="#7.28.2.11">7.28.2.11</a>, <a href="#K.3.9.1.1">K.3.9.1.1</a>
+ <a href="#5.1.2.1">5.1.2.1</a> fwprintf_s function, <a href="#K.3.9.1.1">K.3.9.1.1</a>
+ freopen function, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.5.4">7.21.5.4</a> fwrite function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.8.2">7.21.8.2</a>
+ freopen_s function, <a href="#K.3.5.2.2">K.3.5.2.2</a> fwscanf function, <a href="#7.8.1">7.8.1</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.2">7.28.2.2</a>,
+ frexp functions, <a href="#7.12.6.4">7.12.6.4</a>, <a href="#F.10.3.4">F.10.3.4</a> <a href="#7.28.2.4">7.28.2.4</a>, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.12">7.28.2.12</a>, <a href="#7.28.3.10">7.28.3.10</a>,
+ frexp type-generic macro, <a href="#7.24">7.24</a> <a href="#K.3.9.1.2">K.3.9.1.2</a>
+ fscanf function, <a href="#7.8.1">7.8.1</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, fwscanf_s function, <a href="#K.3.9.1.2">K.3.9.1.2</a>, <a href="#K.3.9.1.5">K.3.9.1.5</a>,
+ <a href="#7.21.6.4">7.21.6.4</a>, <a href="#7.21.6.7">7.21.6.7</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#F.3">F.3</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a> <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.14">K.3.9.1.14</a>
+ fscanf_s function, <a href="#K.3.5.3.2">K.3.5.3.2</a>, <a href="#K.3.5.3.4">K.3.5.3.4</a>,
+<!--page 682 indent 0-->
+ gamma functions, <a href="#7.12.8">7.12.8</a>, <a href="#F.10.5">F.10.5</a> name spaces, <a href="#6.2.3">6.2.3</a>
+ general utilities, <a href="#7.22">7.22</a>, <a href="#K.3.6">K.3.6</a> reserved, <a href="#6.4.1">6.4.1</a>, <a href="#7.1.3">7.1.3</a>, <a href="#K.3.1.2">K.3.1.2</a>
+ wide string, <a href="#7.28.4">7.28.4</a>, <a href="#K.3.9.2">K.3.9.2</a> scope, <a href="#6.2.1">6.2.1</a>
+ general wide string utilities, <a href="#7.28.4">7.28.4</a>, <a href="#K.3.9.2">K.3.9.2</a> type, <a href="#6.2.5">6.2.5</a>
+ generic parameters, <a href="#7.24">7.24</a> identifier list, <a href="#6.7.6">6.7.6</a>
+ generic selection, <a href="#6.5.1.1">6.5.1.1</a> identifier nondigit, <a href="#6.4.2.1">6.4.2.1</a>
+ getc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.5">7.21.7.5</a>, <a href="#7.21.7.6">7.21.7.6</a> IEC 559, <a href="#F.1">F.1</a>
+ getchar function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.6">7.21.7.6</a> IEC 60559, <a href="#2">2</a>, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.3.3">7.3.3</a>,
+ getenv function, <a href="#7.22.4.6">7.22.4.6</a> <a href="#7.6">7.6</a>, <a href="#7.6.4.2">7.6.4.2</a>, <a href="#7.12.1">7.12.1</a>, <a href="#7.12.10.2">7.12.10.2</a>, <a href="#7.12.14">7.12.14</a>, <a href="#F">F</a>, <a href="#G">G</a>,
+ getenv_s function, <a href="#K.3.6.2.1">K.3.6.2.1</a> <a href="#H.1">H.1</a>
+ gets function, <a href="#K.3.5.4.1">K.3.5.4.1</a> IEEE 754, <a href="#F.1">F.1</a>
+ gets_s function, <a href="#K.3.5.4.1">K.3.5.4.1</a> IEEE 854, <a href="#F.1">F.1</a>
+ getwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.6">7.28.3.6</a>, <a href="#7.28.3.7">7.28.3.7</a> IEEE floating-point arithmetic standard, see
+ getwchar function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.7">7.28.3.7</a> IEC 60559, ANSI/IEEE 754,
+ gmtime function, <a href="#7.26.3.3">7.26.3.3</a> ANSI/IEEE 854
+ gmtime_s function, <a href="#K.3.8.2.3">K.3.8.2.3</a> if preprocessing directive, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>,
+ goto statement, <a href="#6.2.1">6.2.1</a>, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.6.1">6.8.6.1</a> <a href="#6.10.1">6.10.1</a>, <a href="#7.1.4">7.1.4</a>
+ graphic characters, <a href="#5.2.1">5.2.1</a> if statement, <a href="#6.8.4.1">6.8.4.1</a>
+ greater-than operator (>), <a href="#6.5.8">6.5.8</a> ifdef preprocessing directive, <a href="#6.10.1">6.10.1</a>
+ greater-than-or-equal-to operator (>=), <a href="#6.5.8">6.5.8</a> ifndef preprocessing directive, <a href="#6.10.1">6.10.1</a>
+ ignore_handler_s function, <a href="#K.3.6.1.3">K.3.6.1.3</a>
+ happens before, <a href="#5.1.2.4">5.1.2.4</a> ilogb functions, <a href="#7.12">7.12</a>, <a href="#7.12.6.5">7.12.6.5</a>, <a href="#F.10.3.5">F.10.3.5</a>
+ header, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#7.1.2">7.1.2</a>, see also standard headers ilogb type-generic macro, <a href="#7.24">7.24</a>
+ header names, <a href="#6.4">6.4</a>, <a href="#6.4.7">6.4.7</a>, <a href="#6.10.2">6.10.2</a> imaginary macro, <a href="#7.3.1">7.3.1</a>, <a href="#G.6">G.6</a>
+ hexadecimal constant, <a href="#6.4.4.1">6.4.4.1</a> imaginary numbers, <a href="#G">G</a>
+ hexadecimal digit, <a href="#6.4.4.1">6.4.4.1</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.4.4.4">6.4.4.4</a> imaginary type domain, <a href="#G.2">G.2</a>
+ hexadecimal prefix, <a href="#6.4.4.1">6.4.4.1</a> imaginary types, <a href="#G">G</a>
+ hexadecimal-character escape sequence imaxabs function, <a href="#7.8.2.1">7.8.2.1</a>
+ (\x hexadecimal digits), <a href="#6.4.4.4">6.4.4.4</a> imaxdiv function, <a href="#7.8">7.8</a>, <a href="#7.8.2.2">7.8.2.2</a>
+ high-order bit, <a href="#3.6">3.6</a> imaxdiv_t type, <a href="#7.8">7.8</a>
+ horizontal-tab character, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a> implementation, <a href="#3.12">3.12</a>
+ horizontal-tab escape sequence (\r), <a href="#7.29.2.1.3">7.29.2.1.3</a> implementation limit, <a href="#3.13">3.13</a>, <a href="#4">4</a>, <a href="#5.2.4.2">5.2.4.2</a>, <a href="#6.4.2.1">6.4.2.1</a>,
+ horizontal-tab escape sequence (\t), <a href="#5.2.2">5.2.2</a>, <a href="#6.7.6">6.7.6</a>, <a href="#6.8.4.2">6.8.4.2</a>, <a href="#E">E</a>, see also environmental
+ <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.4.1.3">7.4.1.3</a>, <a href="#7.4.1.10">7.4.1.10</a> limits
+ hosted execution environment, <a href="#4">4</a>, <a href="#5.1.2">5.1.2</a>, <a href="#5.1.2.2">5.1.2.2</a> implementation-defined behavior, <a href="#3.4.1">3.4.1</a>, <a href="#4">4</a>, <a href="#J.3">J.3</a>
+ HUGE_VAL macro, <a href="#7.12">7.12</a>, <a href="#7.12.1">7.12.1</a>, <a href="#7.22.1.3">7.22.1.3</a>, implementation-defined value, <a href="#3.19.1">3.19.1</a>
+ <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#F.10">F.10</a> implicit conversion, <a href="#6.3">6.3</a>
+ HUGE_VALF macro, <a href="#7.12">7.12</a>, <a href="#7.12.1">7.12.1</a>, <a href="#7.22.1.3">7.22.1.3</a>, implicit initialization, <a href="#6.7.9">6.7.9</a>
+ <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#F.10">F.10</a> include preprocessing directive, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.10.2">6.10.2</a>
+ HUGE_VALL macro, <a href="#7.12">7.12</a>, <a href="#7.12.1">7.12.1</a>, <a href="#7.22.1.3">7.22.1.3</a>, inclusive OR operators
+ <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#F.10">F.10</a> bitwise (|), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.12">6.5.12</a>
+ hyperbolic functions bitwise assignment (|=), <a href="#6.5.16.2">6.5.16.2</a>
+ complex, <a href="#7.3.6">7.3.6</a>, <a href="#G.6.2">G.6.2</a> incomplete type, <a href="#6.2.5">6.2.5</a>
+ real, <a href="#7.12.5">7.12.5</a>, <a href="#F.10.2">F.10.2</a> increment operators, see arithmetic operators,
+ hypot functions, <a href="#7.12.7.3">7.12.7.3</a>, <a href="#F.10.4.3">F.10.4.3</a> increment and decrement
+ hypot type-generic macro, <a href="#7.24">7.24</a> indeterminate value, <a href="#3.19.2">3.19.2</a>
+ indeterminately sequenced, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.5.2.2">6.5.2.2</a>,
+ <a href="#I">I</a> macro, <a href="#7.3.1">7.3.1</a>, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#G.6">G.6</a> <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.16.2">6.5.16.2</a>, see also sequenced before,
+ identifier, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.5.1">6.5.1</a> unsequenced
+ linkage, see linkage indirection operator (*), <a href="#6.5.2.1">6.5.2.1</a>, <a href="#6.5.3.2">6.5.3.2</a>
+ maximum length, <a href="#6.4.2.1">6.4.2.1</a> inequality operator (!=), <a href="#6.5.9">6.5.9</a>
+<!--page 683 indent 0-->
+ infinitary, <a href="#7.12.1">7.12.1</a> extended, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.4.4.1">6.4.4.1</a>, <a href="#7.20">7.20</a>
+ INFINITY macro, <a href="#7.3.9.5">7.3.9.5</a>, <a href="#7.12">7.12</a>, <a href="#F.2.1">F.2.1</a> inter-thread happens before, <a href="#5.1.2.4">5.1.2.4</a>
+ initial position, <a href="#5.2.2">5.2.2</a> interactive device, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.5.3">7.21.5.3</a>
+ initial shift state, <a href="#5.2.1.2">5.2.1.2</a> internal linkage, <a href="#6.2.2">6.2.2</a>
+ initialization, <a href="#5.1.2">5.1.2</a>, <a href="#6.2.4">6.2.4</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.5">6.5.2.5</a>, <a href="#6.7.9">6.7.9</a>, internal name, <a href="#6.4.2.1">6.4.2.1</a>
+ <a href="#F.8.5">F.8.5</a> interrupt, <a href="#5.2.3">5.2.3</a>
+ in blocks, <a href="#6.8">6.8</a> INTMAX_C macro, <a href="#7.20.4.2">7.20.4.2</a>
+ initializer, <a href="#6.7.9">6.7.9</a> INTMAX_MAX macro, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.20.2.5">7.20.2.5</a>
+ permitted form, <a href="#6.6">6.6</a> INTMAX_MIN macro, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.20.2.5">7.20.2.5</a>
+ string literal, <a href="#6.3.2.1">6.3.2.1</a> intmax_t type, <a href="#7.20.1.5">7.20.1.5</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>,
+ inline, <a href="#6.7.4">6.7.4</a> <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ inner scope, <a href="#6.2.1">6.2.1</a> INTN_C macros, <a href="#7.20.4.1">7.20.4.1</a>
+ input failure, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.10">7.28.2.10</a>, INTN_MAX macros, <a href="#7.20.2.1">7.20.2.1</a>
+ <a href="#K.3.5.3.2">K.3.5.3.2</a>, <a href="#K.3.5.3.4">K.3.5.3.4</a>, <a href="#K.3.5.3.7">K.3.5.3.7</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>, INTN_MIN macros, <a href="#7.20.2.1">7.20.2.1</a>
+ <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>, <a href="#K.3.9.1.5">K.3.9.1.5</a>, intN_t types, <a href="#7.20.1.1">7.20.1.1</a>
+ <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>, <a href="#K.3.9.1.14">K.3.9.1.14</a> INTPTR_MAX macro, <a href="#7.20.2.4">7.20.2.4</a>
+ input/output functions INTPTR_MIN macro, <a href="#7.20.2.4">7.20.2.4</a>
+ character, <a href="#7.21.7">7.21.7</a>, <a href="#K.3.5.4">K.3.5.4</a> intptr_t type, <a href="#7.20.1.4">7.20.1.4</a>
+ direct, <a href="#7.21.8">7.21.8</a> inttypes.h header, <a href="#7.8">7.8</a>, <a href="#7.30.4">7.30.4</a>
+ formatted, <a href="#7.21.6">7.21.6</a>, <a href="#K.3.5.3">K.3.5.3</a> isalnum function, <a href="#7.4.1.1">7.4.1.1</a>, <a href="#7.4.1.9">7.4.1.9</a>, <a href="#7.4.1.10">7.4.1.10</a>
+ wide character, <a href="#7.28.2">7.28.2</a>, <a href="#K.3.9.1">K.3.9.1</a> isalpha function, <a href="#7.4.1.1">7.4.1.1</a>, <a href="#7.4.1.2">7.4.1.2</a>
+ wide character, <a href="#7.28.3">7.28.3</a> isblank function, <a href="#7.4.1.3">7.4.1.3</a>
+ formatted, <a href="#7.28.2">7.28.2</a>, <a href="#K.3.9.1">K.3.9.1</a> iscntrl function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.4">7.4.1.4</a>, <a href="#7.4.1.7">7.4.1.7</a>,
+ input/output header, <a href="#7.21">7.21</a>, <a href="#K.3.5">K.3.5</a> <a href="#7.4.1.11">7.4.1.11</a>
+ input/output, device, <a href="#5.1.2.3">5.1.2.3</a> isdigit function, <a href="#7.4.1.1">7.4.1.1</a>, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.5">7.4.1.5</a>,
+ int type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.4.4.1">6.4.4.1</a>, <a href="#6.7.2">6.7.2</a> <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.1.11">7.4.1.11</a>, <a href="#7.11.1.1">7.11.1.1</a>
+ int type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>, isfinite macro, <a href="#7.12.3.2">7.12.3.2</a>, <a href="#F.3">F.3</a>
+ <a href="#6.3.1.8">6.3.1.8</a> isgraph function, <a href="#7.4.1.6">7.4.1.6</a>
+ INT_FASTN_MAX macros, <a href="#7.20.2.3">7.20.2.3</a> isgreater macro, <a href="#7.12.14.1">7.12.14.1</a>, <a href="#F.3">F.3</a>
+ INT_FASTN_MIN macros, <a href="#7.20.2.3">7.20.2.3</a> isgreaterequal macro, <a href="#7.12.14.2">7.12.14.2</a>, <a href="#F.3">F.3</a>
+ int_fastN_t types, <a href="#7.20.1.3">7.20.1.3</a> isinf macro, <a href="#7.12.3.3">7.12.3.3</a>
+ INT_LEASTN_MAX macros, <a href="#7.20.2.2">7.20.2.2</a> isless macro, <a href="#7.12.14.3">7.12.14.3</a>, <a href="#F.3">F.3</a>
+ INT_LEASTN_MIN macros, <a href="#7.20.2.2">7.20.2.2</a> islessequal macro, <a href="#7.12.14.4">7.12.14.4</a>, <a href="#F.3">F.3</a>
+ int_leastN_t types, <a href="#7.20.1.2">7.20.1.2</a> islessgreater macro, <a href="#7.12.14.5">7.12.14.5</a>, <a href="#F.3">F.3</a>
+ INT_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.12">7.12</a>, <a href="#7.12.6.5">7.12.6.5</a> islower function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.2.1">7.4.2.1</a>,
+ INT_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.12">7.12</a> <a href="#7.4.2.2">7.4.2.2</a>
+ integer arithmetic functions, <a href="#7.8.2.1">7.8.2.1</a>, <a href="#7.8.2.2">7.8.2.2</a>, isnan macro, <a href="#7.12.3.4">7.12.3.4</a>, <a href="#F.3">F.3</a>
+ <a href="#7.22.6">7.22.6</a> isnormal macro, <a href="#7.12.3.5">7.12.3.5</a>
+ integer character constant, <a href="#6.4.4.4">6.4.4.4</a> ISO 31-11, <a href="#2">2</a>, <a href="#3">3</a>
+ integer constant, <a href="#6.4.4.1">6.4.4.1</a> ISO 4217, <a href="#2">2</a>, <a href="#7.11.2.1">7.11.2.1</a>
+ integer constant expression, <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.6">6.6</a>, <a href="#6.7.2.1">6.7.2.1</a>, ISO 8601, <a href="#2">2</a>, <a href="#7.26.3.5">7.26.3.5</a>
+ <a href="#6.7.2.2">6.7.2.2</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.7.9">6.7.9</a>, <a href="#6.7.10">6.7.10</a>, <a href="#6.8.4.2">6.8.4.2</a>, <a href="#6.10.1">6.10.1</a>, ISO/IEC 10646, <a href="#2">2</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.4.3">6.4.3</a>, <a href="#6.10.8.2">6.10.8.2</a>
+ <a href="#7.1.4">7.1.4</a> ISO/IEC 10976-1, <a href="#H.1">H.1</a>
+ integer conversion rank, <a href="#6.3.1.1">6.3.1.1</a> ISO/IEC 2382-1, <a href="#2">2</a>, <a href="#3">3</a>
+ integer promotions, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.3.1.1">6.3.1.1</a>, ISO/IEC 646, <a href="#2">2</a>, <a href="#5.2.1.1">5.2.1.1</a>
+ <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.5.3.3">6.5.3.3</a>, <a href="#6.5.7">6.5.7</a>, <a href="#6.8.4.2">6.8.4.2</a>, <a href="#7.20.2">7.20.2</a>, <a href="#7.20.3">7.20.3</a>, ISO/IEC 9945-2, <a href="#7.11">7.11</a>
+ <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a> iso646.h header, <a href="#4">4</a>, <a href="#7.9">7.9</a> *
+ integer suffix, <a href="#6.4.4.1">6.4.4.1</a> isprint function, <a href="#5.2.2">5.2.2</a>, <a href="#7.4.1.8">7.4.1.8</a>
+ integer type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>, ispunct function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.1.9">7.4.1.9</a>,
+ <a href="#F.3">F.3</a>, <a href="#F.4">F.4</a> <a href="#7.4.1.11">7.4.1.11</a>
+ integer types, <a href="#6.2.5">6.2.5</a>, <a href="#7.20">7.20</a> isspace function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.7">7.4.1.7</a>, <a href="#7.4.1.9">7.4.1.9</a>,
+<!--page 684 indent 0-->
+ <a href="#7.4.1.10">7.4.1.10</a>, <a href="#7.4.1.11">7.4.1.11</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.3">7.22.1.3</a>, LC_ALL macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
+ <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.2.2">7.28.2.2</a> LC_COLLATE macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.23.4.3">7.23.4.3</a>,
+ isunordered macro, <a href="#7.12.14.6">7.12.14.6</a>, <a href="#F.3">F.3</a> <a href="#7.28.4.4.2">7.28.4.4.2</a>
+ isupper function, <a href="#7.4.1.2">7.4.1.2</a>, <a href="#7.4.1.11">7.4.1.11</a>, <a href="#7.4.2.1">7.4.2.1</a>, LC_CTYPE macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.22">7.22</a>, <a href="#7.22.7">7.22.7</a>,
+ <a href="#7.4.2.2">7.4.2.2</a> <a href="#7.22.8">7.22.8</a>, <a href="#7.28.6">7.28.6</a>, <a href="#7.29.1">7.29.1</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.2.2.2">7.29.2.2.2</a>,
+ iswalnum function, <a href="#7.29.2.1.1">7.29.2.1.1</a>, <a href="#7.29.2.1.9">7.29.2.1.9</a>, <a href="#7.29.3.2.1">7.29.3.2.1</a>, <a href="#7.29.3.2.2">7.29.3.2.2</a>, <a href="#K.3.6.4">K.3.6.4</a>, <a href="#K.3.6.5">K.3.6.5</a>
+ <a href="#7.29.2.1.10">7.29.2.1.10</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> LC_MONETARY macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
+ iswalpha function, <a href="#7.29.2.1.1">7.29.2.1.1</a>, <a href="#7.29.2.1.2">7.29.2.1.2</a>, LC_NUMERIC macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a>
+ <a href="#7.29.2.2.1">7.29.2.2.1</a> LC_TIME macro, <a href="#7.11">7.11</a>, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.26.3.5">7.26.3.5</a>
+ iswblank function, <a href="#7.29.2.1.3">7.29.2.1.3</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> lconv structure type, <a href="#7.11">7.11</a>
+ iswcntrl function, <a href="#7.29.2.1.2">7.29.2.1.2</a>, <a href="#7.29.2.1.4">7.29.2.1.4</a>, LDBL_DECIMAL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.29.2.1.7">7.29.2.1.7</a>, <a href="#7.29.2.1.11">7.29.2.1.11</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> LDBL_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ iswctype function, <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.2.2.2">7.29.2.2.2</a> LDBL_EPSILON macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ iswdigit function, <a href="#7.29.2.1.1">7.29.2.1.1</a>, <a href="#7.29.2.1.2">7.29.2.1.2</a>, LDBL_HAS_SUBNORM macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.29.2.1.5">7.29.2.1.5</a>, <a href="#7.29.2.1.7">7.29.2.1.7</a>, <a href="#7.29.2.1.11">7.29.2.1.11</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> LDBL_MANT_DIG macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ iswgraph function, <a href="#7.29.2.1">7.29.2.1</a>, <a href="#7.29.2.1.6">7.29.2.1.6</a>, LDBL_MAX macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.29.2.1.10">7.29.2.1.10</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> LDBL_MAX_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ iswlower function, <a href="#7.29.2.1.2">7.29.2.1.2</a>, <a href="#7.29.2.1.7">7.29.2.1.7</a>, LDBL_MAX_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.3.1.1">7.29.3.1.1</a>, <a href="#7.29.3.1.2">7.29.3.1.2</a> LDBL_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ iswprint function, <a href="#7.29.2.1.6">7.29.2.1.6</a>, <a href="#7.29.2.1.8">7.29.2.1.8</a>, LDBL_MIN_10_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.29.2.2.1">7.29.2.2.1</a> LDBL_MIN_EXP macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ iswpunct function, <a href="#7.29.2.1">7.29.2.1</a>, <a href="#7.29.2.1.2">7.29.2.1.2</a>, LDBL_TRUE_MIN macro, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#7.29.2.1.7">7.29.2.1.7</a>, <a href="#7.29.2.1.9">7.29.2.1.9</a>, <a href="#7.29.2.1.10">7.29.2.1.10</a>, ldexp functions, <a href="#7.12.6.6">7.12.6.6</a>, <a href="#F.10.3.6">F.10.3.6</a>
+ <a href="#7.29.2.1.11">7.29.2.1.11</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> ldexp type-generic macro, <a href="#7.24">7.24</a>
+ iswspace function, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>, ldiv function, <a href="#7.22.6.2">7.22.6.2</a>
+ <a href="#7.28.4.1.1">7.28.4.1.1</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>, <a href="#7.29.2.1.2">7.29.2.1.2</a>, <a href="#7.29.2.1.6">7.29.2.1.6</a>, ldiv_t type, <a href="#7.22">7.22</a>
+ <a href="#7.29.2.1.7">7.29.2.1.7</a>, <a href="#7.29.2.1.9">7.29.2.1.9</a>, <a href="#7.29.2.1.10">7.29.2.1.10</a>, leading underscore in identifiers, <a href="#7.1.3">7.1.3</a>
+ <a href="#7.29.2.1.11">7.29.2.1.11</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> left-shift assignment operator (<<=), <a href="#6.5.16.2">6.5.16.2</a>
+ iswupper function, <a href="#7.29.2.1.2">7.29.2.1.2</a>, <a href="#7.29.2.1.11">7.29.2.1.11</a>, left-shift operator (<<), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
+ <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.3.1.1">7.29.3.1.1</a>, <a href="#7.29.3.1.2">7.29.3.1.2</a> length
+ iswxdigit function, <a href="#7.29.2.1.12">7.29.2.1.12</a>, <a href="#7.29.2.2.1">7.29.2.2.1</a> external name, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.11.3">6.11.3</a>
+ isxdigit function, <a href="#7.4.1.12">7.4.1.12</a>, <a href="#7.11.1.1">7.11.1.1</a> function name, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.11.3">6.11.3</a>
+ italic type convention, <a href="#3">3</a>, <a href="#6.1">6.1</a> identifier, <a href="#6.4.2.1">6.4.2.1</a>
+ iteration statements, <a href="#6.8.5">6.8.5</a> internal name, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>
+ length function, <a href="#7.22.7.1">7.22.7.1</a>, <a href="#7.23.6.3">7.23.6.3</a>, <a href="#7.28.4.6.1">7.28.4.6.1</a>,
+ jmp_buf type, <a href="#7.13">7.13</a> <a href="#7.28.6.3.1">7.28.6.3.1</a>, <a href="#K.3.7.4.4">K.3.7.4.4</a>, <a href="#K.3.9.2.4.1">K.3.9.2.4.1</a>
+ jump statements, <a href="#6.8.6">6.8.6</a> length modifier, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>,
+ <a href="#7.28.2.2">7.28.2.2</a>
+ keywords, <a href="#6.4.1">6.4.1</a>, <a href="#G.2">G.2</a>, <a href="#J.5.9">J.5.9</a>, <a href="#J.5.10">J.5.10</a> less-than operator (<), <a href="#6.5.8">6.5.8</a>
+ kill_dependency macro, <a href="#5.1.2.4">5.1.2.4</a>, <a href="#7.17.3.1">7.17.3.1</a> less-than-or-equal-to operator (<=), <a href="#6.5.8">6.5.8</a>
+ known constant size, <a href="#6.2.5">6.2.5</a> letter, <a href="#5.2.1">5.2.1</a>, <a href="#7.4">7.4</a>
+ lexical elements, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>
+ L_tmpnam macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.4.4">7.21.4.4</a> lgamma functions, <a href="#7.12.8.3">7.12.8.3</a>, <a href="#F.10.5.3">F.10.5.3</a>
+ L_tmpnam_s macro, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> lgamma type-generic macro, <a href="#7.24">7.24</a>
+ label name, <a href="#6.2.1">6.2.1</a>, <a href="#6.2.3">6.2.3</a> library, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#7">7</a>, <a href="#K.3">K.3</a>
+ labeled statement, <a href="#6.8.1">6.8.1</a> future directions, <a href="#7.30">7.30</a>
+ labs function, <a href="#7.22.6.1">7.22.6.1</a> summary, <a href="#B">B</a>
+ language, <a href="#6">6</a> terms, <a href="#7.1.1">7.1.1</a>
+ future directions, <a href="#6.11">6.11</a> use of functions, <a href="#7.1.4">7.1.4</a>
+ syntax summary, <a href="#A">A</a> lifetime, <a href="#6.2.4">6.2.4</a>
+ Latin alphabet, <a href="#5.2.1">5.2.1</a>, <a href="#6.4.2.1">6.4.2.1</a> limits
+<!--page 685 indent 0-->
+ environmental, see environmental limits <a href="#6.3.1.6">6.3.1.6</a>, <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a>
+ implementation, see implementation limits long double _Imaginary type, <a href="#G.2">G.2</a>
+ numerical, see numerical limits long double suffix, l or <a href="#L">L</a>, <a href="#6.4.4.2">6.4.4.2</a>
+ translation, see translation limits long double type, <a href="#6.2.5">6.2.5</a>, <a href="#6.4.4.2">6.4.4.2</a>, <a href="#6.7.2">6.7.2</a>,
+ limits.h header, <a href="#4">4</a>, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.2.5">6.2.5</a>, <a href="#7.10">7.10</a> <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#F.2">F.2</a>
+ line buffered stream, <a href="#7.21.3">7.21.3</a> long double type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>,
+ line number, <a href="#6.10.4">6.10.4</a>, <a href="#6.10.8.1">6.10.8.1</a> <a href="#6.3.1.7">6.3.1.7</a>, <a href="#6.3.1.8">6.3.1.8</a>
+ line preprocessing directive, <a href="#6.10.4">6.10.4</a> long int type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.21.6.1">7.21.6.1</a>,
+ lines, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#7.21.2">7.21.2</a> <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ preprocessing directive, <a href="#6.10">6.10</a> long int type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>,
+ linkage, <a href="#6.2.2">6.2.2</a>, <a href="#6.7">6.7</a>, <a href="#6.7.4">6.7.4</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.9">6.9</a>, <a href="#6.9.2">6.9.2</a>, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.8">6.3.1.8</a>
+ <a href="#6.11.2">6.11.2</a> long integer suffix, l or <a href="#L">L</a>, <a href="#6.4.4.1">6.4.4.1</a>
+ llabs function, <a href="#7.22.6.1">7.22.6.1</a> long long int type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.7.2">6.7.2</a>,
+ lldiv function, <a href="#7.22.6.2">7.22.6.2</a> <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ lldiv_t type, <a href="#7.22">7.22</a> long long int type conversion, <a href="#6.3.1.1">6.3.1.1</a>,
+ LLONG_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.8">6.3.1.8</a>
+ <a href="#7.28.4.1.2">7.28.4.1.2</a> long long integer suffix, ll or LL, <a href="#6.4.4.1">6.4.4.1</a>
+ LLONG_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, LONG_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>
+ <a href="#7.28.4.1.2">7.28.4.1.2</a> LONG_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>
+ llrint functions, <a href="#7.12.9.5">7.12.9.5</a>, <a href="#F.3">F.3</a>, <a href="#F.10.6.5">F.10.6.5</a> longjmp function, <a href="#7.13.1.1">7.13.1.1</a>, <a href="#7.13.2.1">7.13.2.1</a>, <a href="#7.22.4.4">7.22.4.4</a>,
+ llrint type-generic macro, <a href="#7.24">7.24</a> <a href="#7.22.4.7">7.22.4.7</a>
+ llround functions, <a href="#7.12.9.7">7.12.9.7</a>, <a href="#F.10.6.7">F.10.6.7</a> loop body, <a href="#6.8.5">6.8.5</a>
+ llround type-generic macro, <a href="#7.24">7.24</a> low-order bit, <a href="#3.6">3.6</a>
+ local time, <a href="#7.26.1">7.26.1</a> lowercase letter, <a href="#5.2.1">5.2.1</a>
+ locale, <a href="#3.4.2">3.4.2</a> lrint functions, <a href="#7.12.9.5">7.12.9.5</a>, <a href="#F.3">F.3</a>, <a href="#F.10.6.5">F.10.6.5</a>
+ locale-specific behavior, <a href="#3.4.2">3.4.2</a>, <a href="#J.4">J.4</a> lrint type-generic macro, <a href="#7.24">7.24</a>
+ locale.h header, <a href="#7.11">7.11</a>, <a href="#7.30.5">7.30.5</a> lround functions, <a href="#7.12.9.7">7.12.9.7</a>, <a href="#F.10.6.7">F.10.6.7</a>
+ localeconv function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a> lround type-generic macro, <a href="#7.24">7.24</a>
+ localization, <a href="#7.11">7.11</a> lvalue, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.1">6.5.1</a>, <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.3.1">6.5.3.1</a>, <a href="#6.5.16">6.5.16</a>,
+ localtime function, <a href="#7.26.3.4">7.26.3.4</a> <a href="#6.7.2.4">6.7.2.4</a>
+ localtime_s function, <a href="#K.3.8.2.4">K.3.8.2.4</a> lvalue conversion, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.16">6.5.16</a>, <a href="#6.5.16.1">6.5.16.1</a>,
+ log functions, <a href="#7.12.6.7">7.12.6.7</a>, <a href="#F.10.3.7">F.10.3.7</a> <a href="#6.5.16.2">6.5.16.2</a>
+ log type-generic macro, <a href="#7.24">7.24</a>
+ log10 functions, <a href="#7.12.6.8">7.12.6.8</a>, <a href="#F.10.3.8">F.10.3.8</a> macro argument substitution, <a href="#6.10.3.1">6.10.3.1</a>
+ log10 type-generic macro, <a href="#7.24">7.24</a> macro definition
+ log1p functions, <a href="#7.12.6.9">7.12.6.9</a>, <a href="#F.10.3.9">F.10.3.9</a> library function, <a href="#7.1.4">7.1.4</a>
+ log1p type-generic macro, <a href="#7.24">7.24</a> macro invocation, <a href="#6.10.3">6.10.3</a>
+ log2 functions, <a href="#7.12.6.10">7.12.6.10</a>, <a href="#F.10.3.10">F.10.3.10</a> macro name, <a href="#6.10.3">6.10.3</a>
+ log2 type-generic macro, <a href="#7.24">7.24</a> length, <a href="#5.2.4.1">5.2.4.1</a>
+ logarithmic functions predefined, <a href="#6.10.8">6.10.8</a>, <a href="#6.11.9">6.11.9</a>
+ complex, <a href="#7.3.7">7.3.7</a>, <a href="#G.6.3">G.6.3</a> redefinition, <a href="#6.10.3">6.10.3</a>
+ real, <a href="#7.12.6">7.12.6</a>, <a href="#F.10.3">F.10.3</a> scope, <a href="#6.10.3.5">6.10.3.5</a>
+ logb functions, <a href="#7.12.6.11">7.12.6.11</a>, <a href="#F.3">F.3</a>, <a href="#F.10.3.11">F.10.3.11</a> macro parameter, <a href="#6.10.3">6.10.3</a>
+ logb type-generic macro, <a href="#7.24">7.24</a> macro preprocessor, <a href="#6.10">6.10</a>
+ logical operators macro replacement, <a href="#6.10.3">6.10.3</a>
+ AND (&&), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.13">6.5.13</a> magnitude, complex, <a href="#7.3.8.1">7.3.8.1</a>
+ negation (!), <a href="#6.5.3.3">6.5.3.3</a> main function, <a href="#5.1.2.2.1">5.1.2.2.1</a>, <a href="#5.1.2.2.3">5.1.2.2.3</a>, <a href="#6.7.3.1">6.7.3.1</a>, <a href="#6.7.4">6.7.4</a>,
+ OR (||), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.14">6.5.14</a> <a href="#7.21.3">7.21.3</a>
+ logical source lines, <a href="#5.1.1.2">5.1.1.2</a> malloc function, <a href="#7.22.3">7.22.3</a>, <a href="#7.22.3.4">7.22.3.4</a>, <a href="#7.22.3.5">7.22.3.5</a>
+ long double _Complex type, <a href="#6.2.5">6.2.5</a> manipulation functions
+ long double _Complex type conversion, complex, <a href="#7.3.9">7.3.9</a>
+<!--page 686 indent 0-->
+ real, <a href="#7.12.11">7.12.11</a>, <a href="#F.10.8">F.10.8</a> modf functions, <a href="#7.12.6.12">7.12.6.12</a>, <a href="#F.10.3.12">F.10.3.12</a>
+ matching failure, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.10">7.28.2.10</a>, modifiable lvalue, <a href="#6.3.2.1">6.3.2.1</a>
+ <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a> modification order, <a href="#5.1.2.4">5.1.2.4</a>
+ math.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.5">6.5</a>, <a href="#7.12">7.12</a>, <a href="#7.24">7.24</a>, <a href="#F">F</a>, modulus functions, <a href="#7.12.6.12">7.12.6.12</a>
+ <a href="#F.10">F.10</a>, <a href="#J.5.17">J.5.17</a> modulus, complex, <a href="#7.3.8.1">7.3.8.1</a>
+ MATH_ERREXCEPT macro, <a href="#7.12">7.12</a>, <a href="#F.10">F.10</a> mtx_destroy function, <a href="#7.25.4.1">7.25.4.1</a>
+ math_errhandling macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.12">7.12</a>, <a href="#F.10">F.10</a> mtx_init function, <a href="#7.25.1">7.25.1</a>, <a href="#7.25.4.2">7.25.4.2</a>
+ MATH_ERRNO macro, <a href="#7.12">7.12</a> mtx_lock function, <a href="#7.25.4.3">7.25.4.3</a>
+ max_align_t type, <a href="#7.19">7.19</a> mtx_t type, <a href="#7.25.1">7.25.1</a>
+ maximum functions, <a href="#7.12.12">7.12.12</a>, <a href="#F.10.9">F.10.9</a> mtx_timedlock function, <a href="#7.25.4.4">7.25.4.4</a>
+ MB_CUR_MAX macro, <a href="#7.1.1">7.1.1</a>, <a href="#7.22">7.22</a>, <a href="#7.22.7.2">7.22.7.2</a>, mtx_trylock function, <a href="#7.25.4.5">7.25.4.5</a>
+ <a href="#7.22.7.3">7.22.7.3</a>, <a href="#7.27.1.2">7.27.1.2</a>, <a href="#7.27.1.4">7.27.1.4</a>, <a href="#7.28.6.3.3">7.28.6.3.3</a>, mtx_unlock function, <a href="#7.25.4.3">7.25.4.3</a>, <a href="#7.25.4.4">7.25.4.4</a>,
+ <a href="#K.3.6.4.1">K.3.6.4.1</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a> <a href="#7.25.4.5">7.25.4.5</a>, <a href="#7.25.4.6">7.25.4.6</a>
+ MB_LEN_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.1.1">7.1.1</a>, <a href="#7.22">7.22</a> multibyte character, <a href="#3.7.2">3.7.2</a>, <a href="#5.2.1.2">5.2.1.2</a>, <a href="#6.4.4.4">6.4.4.4</a>
+ mblen function, <a href="#7.22.7.1">7.22.7.1</a>, <a href="#7.28.6.3">7.28.6.3</a> multibyte conversion functions
+ mbrlen function, <a href="#7.28.6.3.1">7.28.6.3.1</a> wide character, <a href="#7.22.7">7.22.7</a>, <a href="#K.3.6.4">K.3.6.4</a>
+ mbrtoc16 function, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27.1.1">7.27.1.1</a> extended, <a href="#7.28.6">7.28.6</a>, <a href="#K.3.9.3">K.3.9.3</a>
+ mbrtoc32 function, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27.1.3">7.27.1.3</a> restartable, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a>
+ mbrtowc function, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, wide string, <a href="#7.22.8">7.22.8</a>, <a href="#K.3.6.5">K.3.6.5</a>
+ <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#7.28.6.3.1">7.28.6.3.1</a>, <a href="#7.28.6.3.2">7.28.6.3.2</a>, restartable, <a href="#7.28.6.4">7.28.6.4</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a>
+ <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#K.3.6.5.1">K.3.6.5.1</a>, <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a> multibyte string, <a href="#7.1.1">7.1.1</a>
+ mbsinit function, <a href="#7.28.6.2.1">7.28.6.2.1</a> multibyte/wide character conversion functions,
+ mbsrtowcs function, <a href="#7.28.6.4.1">7.28.6.4.1</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a> <a href="#7.22.7">7.22.7</a>, <a href="#K.3.6.4">K.3.6.4</a>
+ mbsrtowcs_s function, <a href="#K.3.9.3.2">K.3.9.3.2</a>, <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a> extended, <a href="#7.28.6">7.28.6</a>, <a href="#K.3.9.3">K.3.9.3</a>
+ mbstate_t type, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, restartable, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a>
+ <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.27">7.27</a>, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.1">7.28.1</a>, <a href="#7.28.2.1">7.28.2.1</a>, multibyte/wide string conversion functions,
+ <a href="#7.28.2.2">7.28.2.2</a>, <a href="#7.28.6">7.28.6</a>, <a href="#7.28.6.2.1">7.28.6.2.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#7.22.8">7.22.8</a>, <a href="#K.3.6.5">K.3.6.5</a>
+ <a href="#7.28.6.3.1">7.28.6.3.1</a>, <a href="#7.28.6.4">7.28.6.4</a> restartable, <a href="#7.28.6.4">7.28.6.4</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a>
+ mbstowcs function, <a href="#6.4.5">6.4.5</a>, <a href="#7.22.8.1">7.22.8.1</a>, <a href="#7.28.6.4">7.28.6.4</a> multidimensional array, <a href="#6.5.2.1">6.5.2.1</a>
+ mbstowcs_s function, <a href="#K.3.6.5.1">K.3.6.5.1</a> multiplication assignment operator (*=), <a href="#6.5.16.2">6.5.16.2</a>
+ mbtowc function, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#7.22.7.1">7.22.7.1</a>, <a href="#7.22.7.2">7.22.7.2</a>, multiplication operator (*), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#F.3">F.3</a>,
+ <a href="#7.22.8.1">7.22.8.1</a>, <a href="#7.28.6.3">7.28.6.3</a> <a href="#G.5.1">G.5.1</a>
+ member access operators (. and ->), <a href="#6.5.2.3">6.5.2.3</a> multiplicative expressions, <a href="#6.5.5">6.5.5</a>, <a href="#G.5.1">G.5.1</a>
+ member alignment, <a href="#6.7.2.1">6.7.2.1</a>
+ memchr function, <a href="#7.23.5.1">7.23.5.1</a> n-char sequence, <a href="#7.22.1.3">7.22.1.3</a>
+ memcmp function, <a href="#7.23.4">7.23.4</a>, <a href="#7.23.4.1">7.23.4.1</a> n-wchar sequence, <a href="#7.28.4.1.1">7.28.4.1.1</a>
+ memcpy function, <a href="#7.23.2.1">7.23.2.1</a> name
+ memcpy_s function, <a href="#K.3.7.1.1">K.3.7.1.1</a> external, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>, <a href="#6.11.3">6.11.3</a>
+ memmove function, <a href="#7.23.2.2">7.23.2.2</a> file, <a href="#7.21.3">7.21.3</a>
+ memmove_s function, <a href="#K.3.7.1.2">K.3.7.1.2</a> internal, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.2.1">6.4.2.1</a>
+ memory location, <a href="#3.14">3.14</a> label, <a href="#6.2.3">6.2.3</a>
+ memory management functions, <a href="#7.22.3">7.22.3</a> structure/union member, <a href="#6.2.3">6.2.3</a>
+ memory_order type, <a href="#7.17.1">7.17.1</a>, <a href="#7.17.3">7.17.3</a> name spaces, <a href="#6.2.3">6.2.3</a>
+ memset function, <a href="#7.23.6.1">7.23.6.1</a>, <a href="#K.3.7.4.1">K.3.7.4.1</a> named label, <a href="#6.8.1">6.8.1</a>
+ memset_s function, <a href="#K.3.7.4.1">K.3.7.4.1</a> NaN, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ minimum functions, <a href="#7.12.12">7.12.12</a>, <a href="#F.10.9">F.10.9</a> nan functions, <a href="#7.12.11.2">7.12.11.2</a>, <a href="#F.2.1">F.2.1</a>, <a href="#F.10.8.2">F.10.8.2</a>
+ minus operator, unary, <a href="#6.5.3.3">6.5.3.3</a> NAN macro, <a href="#7.12">7.12</a>, <a href="#F.2.1">F.2.1</a>
+ miscellaneous functions NDEBUG macro, <a href="#7.2">7.2</a>
+ string, <a href="#7.23.6">7.23.6</a>, <a href="#K.3.7.4">K.3.7.4</a> nearbyint functions, <a href="#7.12.9.3">7.12.9.3</a>, <a href="#7.12.9.4">7.12.9.4</a>, <a href="#F.3">F.3</a>,
+ wide string, <a href="#7.28.4.6">7.28.4.6</a>, <a href="#K.3.9.2.4">K.3.9.2.4</a> <a href="#F.10.6.3">F.10.6.3</a>
+ mktime function, <a href="#7.26.2.3">7.26.2.3</a> nearbyint type-generic macro, <a href="#7.24">7.24</a>
+<!--page 687 indent 0-->
+ nearest integer functions, <a href="#7.12.9">7.12.9</a>, <a href="#F.10.6">F.10.6</a> operating system, <a href="#5.1.2.1">5.1.2.1</a>, <a href="#7.22.4.8">7.22.4.8</a>
+ negation operator (!), <a href="#6.5.3.3">6.5.3.3</a> operations on files, <a href="#7.21.4">7.21.4</a>, <a href="#K.3.5.1">K.3.5.1</a>
+ negative zero, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#7.12.11.1">7.12.11.1</a> operator, <a href="#6.4.6">6.4.6</a>
+ new-line character, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a>, <a href="#6.10">6.10</a>, <a href="#6.10.4">6.10.4</a> operators, <a href="#6.5">6.5</a>
+ new-line escape sequence (\n), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, additive, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.6">6.5.6</a>
+ <a href="#7.4.1.10">7.4.1.10</a> alignof, <a href="#6.5.3.4">6.5.3.4</a>
+ nextafter functions, <a href="#7.12.11.3">7.12.11.3</a>, <a href="#7.12.11.4">7.12.11.4</a>, <a href="#F.3">F.3</a>, assignment, <a href="#6.5.16">6.5.16</a>
+ <a href="#F.10.8.3">F.10.8.3</a> associativity, <a href="#6.5">6.5</a>
+ nextafter type-generic macro, <a href="#7.24">7.24</a> equality, <a href="#6.5.9">6.5.9</a>
+ nexttoward functions, <a href="#7.12.11.4">7.12.11.4</a>, <a href="#F.3">F.3</a>, <a href="#F.10.8.4">F.10.8.4</a> multiplicative, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a>, <a href="#G.5.1">G.5.1</a>
+ nexttoward type-generic macro, <a href="#7.24">7.24</a> postfix, <a href="#6.5.2">6.5.2</a>
+ no linkage, <a href="#6.2.2">6.2.2</a> precedence, <a href="#6.5">6.5</a>
+ no-return function, <a href="#6.7.4">6.7.4</a> preprocessing, <a href="#6.10.1">6.10.1</a>, <a href="#6.10.3.2">6.10.3.2</a>, <a href="#6.10.3.3">6.10.3.3</a>, <a href="#6.10.9">6.10.9</a>
+ non-stop floating-point control mode, <a href="#7.6.4.2">7.6.4.2</a> relational, <a href="#6.5.8">6.5.8</a>
+ nongraphic characters, <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a> shift, <a href="#6.5.7">6.5.7</a>
+ nonlocal jumps header, <a href="#7.13">7.13</a> sizeof, <a href="#6.5.3.4">6.5.3.4</a>
+ norm, complex, <a href="#7.3.8.1">7.3.8.1</a> unary, <a href="#6.5.3">6.5.3</a>
+ normalized broken-down time, <a href="#K.3.8.1">K.3.8.1</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a> unary arithmetic, <a href="#6.5.3.3">6.5.3.3</a>
+ not macro, <a href="#7.9">7.9</a> optional features, see conditional features
+ not-equal-to operator, see inequality operator or macro, <a href="#7.9">7.9</a>
+ not_eq macro, <a href="#7.9">7.9</a> OR operators
+ null character (\0), <a href="#5.2.1">5.2.1</a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a> bitwise exclusive (^), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.11">6.5.11</a>
+ padding of binary stream, <a href="#7.21.2">7.21.2</a> bitwise exclusive assignment (^=), <a href="#6.5.16.2">6.5.16.2</a>
+ NULL macro, <a href="#7.11">7.11</a>, <a href="#7.19">7.19</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.22">7.22</a>, <a href="#7.23.1">7.23.1</a>, bitwise inclusive (|), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.12">6.5.12</a>
+ <a href="#7.26.1">7.26.1</a>, <a href="#7.28.1">7.28.1</a> bitwise inclusive assignment (|=), <a href="#6.5.16.2">6.5.16.2</a>
+ null pointer, <a href="#6.3.2.3">6.3.2.3</a> logical (||), <a href="#5.1.2.4">5.1.2.4</a>, <a href="#6.5.14">6.5.14</a>
+ null pointer constant, <a href="#6.3.2.3">6.3.2.3</a> or_eq macro, <a href="#7.9">7.9</a>
+ null preprocessing directive, <a href="#6.10.7">6.10.7</a> order of allocated storage, <a href="#7.22.3">7.22.3</a>
+ null statement, <a href="#6.8.3">6.8.3</a> order of evaluation, <a href="#6.5">6.5</a>, <a href="#6.5.16">6.5.16</a>, <a href="#6.10.3.2">6.10.3.2</a>, <a href="#6.10.3.3">6.10.3.3</a>,
+ null wide character, <a href="#7.1.1">7.1.1</a> see also sequence points
+ number classification macros, <a href="#7.12">7.12</a>, <a href="#7.12.3.1">7.12.3.1</a> ordinary identifier name space, <a href="#6.2.3">6.2.3</a>
+ numeric conversion functions, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1">7.22.1</a> orientation of stream, <a href="#7.21.2">7.21.2</a>, <a href="#7.28.3.5">7.28.3.5</a>
+ wide string, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.28.4.1">7.28.4.1</a> out-of-bounds store, <a href="#L.2.1">L.2.1</a>
+ numerical limits, <a href="#5.2.4.2">5.2.4.2</a> outer scope, <a href="#6.2.1">6.2.1</a>
+ over-aligned, <a href="#6.2.8">6.2.8</a>
+ object, <a href="#3.15">3.15</a>
+ object representation, <a href="#6.2.6.1">6.2.6.1</a> padding
+ object type, <a href="#6.2.5">6.2.5</a> binary stream, <a href="#7.21.2">7.21.2</a>
+ object-like macro, <a href="#6.10.3">6.10.3</a> bits, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#7.20.1.1">7.20.1.1</a>
+ observable behavior, <a href="#5.1.2.3">5.1.2.3</a> structure/union, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.7.2.1">6.7.2.1</a>
+ obsolescence, <a href="#6.11">6.11</a>, <a href="#7.30">7.30</a> parameter, <a href="#3.16">3.16</a>
+ octal constant, <a href="#6.4.4.1">6.4.4.1</a> array, <a href="#6.9.1">6.9.1</a>
+ octal digit, <a href="#6.4.4.1">6.4.4.1</a>, <a href="#6.4.4.4">6.4.4.4</a> ellipsis, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.10.3">6.10.3</a>
+ octal-character escape sequence (\octal digits), function, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.7">6.7</a>, <a href="#6.9.1">6.9.1</a>
+ <a href="#6.4.4.4">6.4.4.4</a> macro, <a href="#6.10.3">6.10.3</a>
+ offsetof macro, <a href="#7.19">7.19</a> main function, <a href="#5.1.2.2.1">5.1.2.2.1</a>
+ on-off switch, <a href="#6.10.6">6.10.6</a> program, <a href="#5.1.2.2.1">5.1.2.2.1</a>
+ once_flag type, <a href="#7.25.1">7.25.1</a> parameter type list, <a href="#6.7.6.3">6.7.6.3</a>
+ ONCE_FLAG_INIT macro, <a href="#7.25.1">7.25.1</a> parentheses punctuator (( )), <a href="#6.7.6.3">6.7.6.3</a>, <a href="#6.8.4">6.8.4</a>, <a href="#6.8.5">6.8.5</a>
+ ones' complement, <a href="#6.2.6.2">6.2.6.2</a> parenthesized expression, <a href="#6.5.1">6.5.1</a>
+ operand, <a href="#6.4.6">6.4.6</a>, <a href="#6.5">6.5</a> parse state, <a href="#7.21.2">7.21.2</a>
+<!--page 688 indent 0-->
+ perform a trap, <a href="#3.19.5">3.19.5</a> preprocessor, <a href="#6.10">6.10</a>
+ permitted form of initializer, <a href="#6.6">6.6</a> PRIcFASTN macros, <a href="#7.8.1">7.8.1</a>
+ perror function, <a href="#7.21.10.4">7.21.10.4</a> PRIcLEASTN macros, <a href="#7.8.1">7.8.1</a>
+ phase angle, complex, <a href="#7.3.9.1">7.3.9.1</a> PRIcMAX macros, <a href="#7.8.1">7.8.1</a>
+ physical source lines, <a href="#5.1.1.2">5.1.1.2</a> PRIcN macros, <a href="#7.8.1">7.8.1</a>
+ placemarker, <a href="#6.10.3.3">6.10.3.3</a> PRIcPTR macros, <a href="#7.8.1">7.8.1</a>
+ plus operator, unary, <a href="#6.5.3.3">6.5.3.3</a> primary expression, <a href="#6.5.1">6.5.1</a>
+ pointer arithmetic, <a href="#6.5.6">6.5.6</a> printf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.3">7.21.6.3</a>, <a href="#7.21.6.10">7.21.6.10</a>,
+ pointer comparison, <a href="#6.5.8">6.5.8</a> <a href="#K.3.5.3.3">K.3.5.3.3</a>
+ pointer declarator, <a href="#6.7.6.1">6.7.6.1</a> printf_s function, <a href="#K.3.5.3.3">K.3.5.3.3</a>
+ pointer operator (->), <a href="#6.5.2.3">6.5.2.3</a> printing character, <a href="#5.2.2">5.2.2</a>, <a href="#7.4">7.4</a>, <a href="#7.4.1.8">7.4.1.8</a>
+ pointer to function, <a href="#6.5.2.2">6.5.2.2</a> printing wide character, <a href="#7.29.2">7.29.2</a>
+ pointer type, <a href="#6.2.5">6.2.5</a> program diagnostics, <a href="#7.2.1">7.2.1</a>
+ pointer type conversion, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a> program execution, <a href="#5.1.2.2.2">5.1.2.2.2</a>, <a href="#5.1.2.3">5.1.2.3</a>
+ pointer, null, <a href="#6.3.2.3">6.3.2.3</a> program file, <a href="#5.1.1.1">5.1.1.1</a>
+ pole error, <a href="#7.12.1">7.12.1</a>, <a href="#7.12.5.3">7.12.5.3</a>, <a href="#7.12.6.7">7.12.6.7</a>, <a href="#7.12.6.8">7.12.6.8</a>, program image, <a href="#5.1.1.2">5.1.1.2</a>
+ <a href="#7.12.6.9">7.12.6.9</a>, <a href="#7.12.6.10">7.12.6.10</a>, <a href="#7.12.6.11">7.12.6.11</a>, <a href="#7.12.7.4">7.12.7.4</a>, program name (argv[0]), <a href="#5.1.2.2.1">5.1.2.2.1</a>
+ <a href="#7.12.8.3">7.12.8.3</a>, <a href="#7.12.8.4">7.12.8.4</a> program parameters, <a href="#5.1.2.2.1">5.1.2.2.1</a>
+ portability, <a href="#4">4</a>, <a href="#J">J</a> program startup, <a href="#5.1.2">5.1.2</a>, <a href="#5.1.2.1">5.1.2.1</a>, <a href="#5.1.2.2.1">5.1.2.2.1</a>
+ position indicator, file, see file position indicator program structure, <a href="#5.1.1.1">5.1.1.1</a>
+ positive difference, <a href="#7.12.12.1">7.12.12.1</a> program termination, <a href="#5.1.2">5.1.2</a>, <a href="#5.1.2.1">5.1.2.1</a>, <a href="#5.1.2.2.3">5.1.2.2.3</a>,
+ positive difference functions, <a href="#7.12.12">7.12.12</a>, <a href="#F.10.9">F.10.9</a> <a href="#5.1.2.3">5.1.2.3</a>
+ postfix decrement operator (--), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a> program, conforming, <a href="#4">4</a>
+ postfix expressions, <a href="#6.5.2">6.5.2</a> program, strictly conforming, <a href="#4">4</a>
+ postfix increment operator (++), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.4">6.5.2.4</a> promotions
+ pow functions, <a href="#7.12.7.4">7.12.7.4</a>, <a href="#F.10.4.4">F.10.4.4</a> default argument, <a href="#6.5.2.2">6.5.2.2</a>
+ pow type-generic macro, <a href="#7.24">7.24</a> integer, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.3.1.1">6.3.1.1</a>
+ power functions prototype, see function prototype
+ complex, <a href="#7.3.8">7.3.8</a>, <a href="#G.6.4">G.6.4</a> pseudo-random sequence functions, <a href="#7.22.2">7.22.2</a>
+ real, <a href="#7.12.7">7.12.7</a>, <a href="#F.10.4">F.10.4</a> PTRDIFF_MAX macro, <a href="#7.20.3">7.20.3</a>
+ pp-number, <a href="#6.4.8">6.4.8</a> PTRDIFF_MIN macro, <a href="#7.20.3">7.20.3</a>
+ pragma operator, <a href="#6.10.9">6.10.9</a> ptrdiff_t type, <a href="#7.17.1">7.17.1</a>, <a href="#7.19">7.19</a>, <a href="#7.20.3">7.20.3</a>, <a href="#7.21.6.1">7.21.6.1</a>,
+ pragma preprocessing directive, <a href="#6.10.6">6.10.6</a>, <a href="#6.11.8">6.11.8</a> <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ precedence of operators, <a href="#6.5">6.5</a> punctuators, <a href="#6.4.6">6.4.6</a>
+ precedence of syntax rules, <a href="#5.1.1.2">5.1.1.2</a> putc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.7">7.21.7.7</a>, <a href="#7.21.7.8">7.21.7.8</a>
+ precision, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.2.1">7.28.2.1</a> putchar function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.8">7.21.7.8</a>
+ excess, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.8.6.4">6.8.6.4</a> puts function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.9">7.21.7.9</a>
+ predefined macro names, <a href="#6.10.8">6.10.8</a>, <a href="#6.11.9">6.11.9</a> putwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.8">7.28.3.8</a>, <a href="#7.28.3.9">7.28.3.9</a>
+ prefix decrement operator (--), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a> putwchar function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.9">7.28.3.9</a>
+ prefix increment operator (++), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3.1">6.5.3.1</a>
+ preprocessing concatenation, <a href="#6.10.3.3">6.10.3.3</a> qsort function, <a href="#7.22.5">7.22.5</a>, <a href="#7.22.5.2">7.22.5.2</a>
+ preprocessing directives, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.10">6.10</a> qsort_s function, <a href="#K.3.6.3">K.3.6.3</a>, <a href="#K.3.6.3.2">K.3.6.3.2</a>
+ preprocessing file, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#6.10">6.10</a> qualified types, <a href="#6.2.5">6.2.5</a>
+ preprocessing numbers, <a href="#6.4">6.4</a>, <a href="#6.4.8">6.4.8</a> qualified version of type, <a href="#6.2.5">6.2.5</a>
+ preprocessing operators question-mark escape sequence (\?), <a href="#6.4.4.4">6.4.4.4</a>
+ #, <a href="#6.10.3.2">6.10.3.2</a> quick_exit function, <a href="#7.22.4.3">7.22.4.3</a>, <a href="#7.22.4.4">7.22.4.4</a>,
+ ##, <a href="#6.10.3.3">6.10.3.3</a> <a href="#7.22.4.7">7.22.4.7</a>
+ _Pragma, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.10.9">6.10.9</a> quiet NaN, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ defined, <a href="#6.10.1">6.10.1</a>
+ preprocessing tokens, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>, <a href="#6.10">6.10</a> raise function, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.14.2.1">7.14.2.1</a>, <a href="#7.22.4.1">7.22.4.1</a>
+ preprocessing translation unit, <a href="#5.1.1.1">5.1.1.1</a> rand function, <a href="#7.22">7.22</a>, <a href="#7.22.2.1">7.22.2.1</a>, <a href="#7.22.2.2">7.22.2.2</a>
+<!--page 689 indent 0-->
+ RAND_MAX macro, <a href="#7.22">7.22</a>, <a href="#7.22.2.1">7.22.2.1</a> restrict-qualified type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.3">6.7.3</a>
+ range return statement, <a href="#6.8.6.4">6.8.6.4</a>, <a href="#F.6">F.6</a>
+ excess, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.8.6.4">6.8.6.4</a> rewind function, <a href="#7.21.5.3">7.21.5.3</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.5">7.21.9.5</a>,
+ range error, <a href="#7.12.1">7.12.1</a>, <a href="#7.12.5.4">7.12.5.4</a>, <a href="#7.12.5.5">7.12.5.5</a>, <a href="#7.12.6.1">7.12.6.1</a>, <a href="#7.28.3.10">7.28.3.10</a>
+ <a href="#7.12.6.2">7.12.6.2</a>, <a href="#7.12.6.3">7.12.6.3</a>, <a href="#7.12.6.5">7.12.6.5</a>, <a href="#7.12.6.6">7.12.6.6</a>, right-shift assignment operator (>>=), <a href="#6.5.16.2">6.5.16.2</a>
+ <a href="#7.12.6.13">7.12.6.13</a>, <a href="#7.12.7.3">7.12.7.3</a>, <a href="#7.12.7.4">7.12.7.4</a>, <a href="#7.12.8.2">7.12.8.2</a>, right-shift operator (>>), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.7">6.5.7</a>
+ <a href="#7.12.8.3">7.12.8.3</a>, <a href="#7.12.8.4">7.12.8.4</a>, <a href="#7.12.9.5">7.12.9.5</a>, <a href="#7.12.9.7">7.12.9.7</a>, rint functions, <a href="#7.12.9.4">7.12.9.4</a>, <a href="#F.3">F.3</a>, <a href="#F.10.6.4">F.10.6.4</a>
+ <a href="#7.12.11.3">7.12.11.3</a>, <a href="#7.12.12.1">7.12.12.1</a>, <a href="#7.12.13.1">7.12.13.1</a> rint type-generic macro, <a href="#7.24">7.24</a>
+ rank, see integer conversion rank round functions, <a href="#7.12.9.6">7.12.9.6</a>, <a href="#F.10.6.6">F.10.6.6</a>
+ read-modify-write operations, <a href="#5.1.2.4">5.1.2.4</a> round type-generic macro, <a href="#7.24">7.24</a>
+ real floating type conversion, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.5">6.3.1.5</a>, rounding mode, floating point, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ <a href="#6.3.1.7">6.3.1.7</a>, <a href="#F.3">F.3</a>, <a href="#F.4">F.4</a> RSIZE_MAX macro, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a>,
+ real floating types, <a href="#6.2.5">6.2.5</a> <a href="#K.3.5.3.5">K.3.5.3.5</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>, <a href="#K.3.5.3.12">K.3.5.3.12</a>, <a href="#K.3.5.3.13">K.3.5.3.13</a>,
+ real type domain, <a href="#6.2.5">6.2.5</a> <a href="#K.3.5.4.1">K.3.5.4.1</a>, <a href="#K.3.6.2.1">K.3.6.2.1</a>, <a href="#K.3.6.3.1">K.3.6.3.1</a>, <a href="#K.3.6.3.2">K.3.6.3.2</a>,
+ real types, <a href="#6.2.5">6.2.5</a> <a href="#K.3.6.4.1">K.3.6.4.1</a>, <a href="#K.3.6.5.1">K.3.6.5.1</a>, <a href="#K.3.6.5.2">K.3.6.5.2</a>, <a href="#K.3.7.1.1">K.3.7.1.1</a>,
+ real-floating, <a href="#7.12.3">7.12.3</a> <a href="#K.3.7.1.2">K.3.7.1.2</a>, <a href="#K.3.7.1.3">K.3.7.1.3</a>, <a href="#K.3.7.1.4">K.3.7.1.4</a>, <a href="#K.3.7.2.1">K.3.7.2.1</a>,
+ realloc function, <a href="#7.22.3">7.22.3</a>, <a href="#7.22.3.5">7.22.3.5</a> <a href="#K.3.7.2.2">K.3.7.2.2</a>, <a href="#K.3.7.3.1">K.3.7.3.1</a>, <a href="#K.3.7.4.1">K.3.7.4.1</a>, <a href="#K.3.7.4.2">K.3.7.4.2</a>,
+ recommended practice, <a href="#3.17">3.17</a> <a href="#K.3.8.2.1">K.3.8.2.1</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a>, <a href="#K.3.9.1.3">K.3.9.1.3</a>, <a href="#K.3.9.1.4">K.3.9.1.4</a>,
+ recursion, <a href="#6.5.2.2">6.5.2.2</a> <a href="#K.3.9.1.8">K.3.9.1.8</a>, <a href="#K.3.9.1.9">K.3.9.1.9</a>, <a href="#K.3.9.2.1.1">K.3.9.2.1.1</a>, <a href="#K.3.9.2.1.2">K.3.9.2.1.2</a>,
+ recursive function call, <a href="#6.5.2.2">6.5.2.2</a> <a href="#K.3.9.2.1.3">K.3.9.2.1.3</a>, <a href="#K.3.9.2.1.4">K.3.9.2.1.4</a>, <a href="#K.3.9.2.2.1">K.3.9.2.2.1</a>,
+ redefinition of macro, <a href="#6.10.3">6.10.3</a> <a href="#K.3.9.2.2.2">K.3.9.2.2.2</a>, <a href="#K.3.9.2.3.1">K.3.9.2.3.1</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a>,
+ reentrancy, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.3">5.2.3</a> <a href="#K.3.9.3.2.1">K.3.9.3.2.1</a>, <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a>
+ library functions, <a href="#7.1.4">7.1.4</a> rsize_t type, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a>, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a>,
+ referenced type, <a href="#6.2.5">6.2.5</a> <a href="#K.3.6">K.3.6</a>, <a href="#K.3.7">K.3.7</a>, <a href="#K.3.8">K.3.8</a>, <a href="#K.3.9">K.3.9</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>
+ register storage-class specifier, <a href="#6.7.1">6.7.1</a>, <a href="#6.9">6.9</a> runtime-constraint, <a href="#3.18">3.18</a>
+ relational expressions, <a href="#6.5.8">6.5.8</a> Runtime-constraint handling functions, <a href="#K.3.6.1">K.3.6.1</a>
+ relaxed atomic operations, <a href="#5.1.2.4">5.1.2.4</a> rvalue, <a href="#6.3.2.1">6.3.2.1</a>
+ release fence, <a href="#7.17.4">7.17.4</a>
+ release operation, <a href="#5.1.2.4">5.1.2.4</a> same scope, <a href="#6.2.1">6.2.1</a>
+ release sequence, <a href="#5.1.2.4">5.1.2.4</a> save calling environment function, <a href="#7.13.1">7.13.1</a>
+ reliability of data, interrupted, <a href="#5.1.2.3">5.1.2.3</a> scalar types, <a href="#6.2.5">6.2.5</a>
+ remainder assignment operator (%=), <a href="#6.5.16.2">6.5.16.2</a> scalbln function, <a href="#7.12.6.13">7.12.6.13</a>, <a href="#F.3">F.3</a>, <a href="#F.10.3.13">F.10.3.13</a>
+ remainder functions, <a href="#7.12.10">7.12.10</a>, <a href="#F.10.7">F.10.7</a> scalbln type-generic macro, <a href="#7.24">7.24</a>
+ remainder functions, <a href="#7.12.10.2">7.12.10.2</a>, <a href="#7.12.10.3">7.12.10.3</a>, <a href="#F.3">F.3</a>, scalbn function, <a href="#7.12.6.13">7.12.6.13</a>, <a href="#F.3">F.3</a>, <a href="#F.10.3.13">F.10.3.13</a>
+ <a href="#F.10.7.2">F.10.7.2</a> scalbn type-generic macro, <a href="#7.24">7.24</a>
+ remainder operator (%), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.5">6.5.5</a> scanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.4">7.21.6.4</a>, <a href="#7.21.6.11">7.21.6.11</a>
+ remainder type-generic macro, <a href="#7.24">7.24</a> scanf_s function, <a href="#K.3.5.3.4">K.3.5.3.4</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>
+ remove function, <a href="#7.21.4.1">7.21.4.1</a>, <a href="#7.21.4.4">7.21.4.4</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> scanlist, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ remquo functions, <a href="#7.12.10.3">7.12.10.3</a>, <a href="#F.3">F.3</a>, <a href="#F.10.7.3">F.10.7.3</a> scanset, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ remquo type-generic macro, <a href="#7.24">7.24</a> SCHAR_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>
+ rename function, <a href="#7.21.4.2">7.21.4.2</a> SCHAR_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>
+ representations of types, <a href="#6.2.6">6.2.6</a> SCNcFASTN macros, <a href="#7.8.1">7.8.1</a>
+ pointer, <a href="#6.2.5">6.2.5</a> SCNcLEASTN macros, <a href="#7.8.1">7.8.1</a>
+ rescanning and replacement, <a href="#6.10.3.4">6.10.3.4</a> SCNcMAX macros, <a href="#7.8.1">7.8.1</a>
+ reserved identifiers, <a href="#6.4.1">6.4.1</a>, <a href="#7.1.3">7.1.3</a>, <a href="#K.3.1.2">K.3.1.2</a> SCNcN macros, <a href="#7.8.1">7.8.1</a>
+ restartable multibyte/wide character conversion SCNcPTR macros, <a href="#7.8.1">7.8.1</a>
+ functions, <a href="#7.27.1">7.27.1</a>, <a href="#7.28.6.3">7.28.6.3</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a> scope of identifier, <a href="#6.2.1">6.2.1</a>, <a href="#6.9.2">6.9.2</a>
+ restartable multibyte/wide string conversion search functions
+ functions, <a href="#7.28.6.4">7.28.6.4</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a> string, <a href="#7.23.5">7.23.5</a>, <a href="#K.3.7.3">K.3.7.3</a>
+ restore calling environment function, <a href="#7.13.2">7.13.2</a> utility, <a href="#7.22.5">7.22.5</a>, <a href="#K.3.6.3">K.3.6.3</a>
+ restrict type qualifier, <a href="#6.7.3">6.7.3</a>, <a href="#6.7.3.1">6.7.3.1</a> wide string, <a href="#7.28.4.5">7.28.4.5</a>, <a href="#K.3.9.2.3">K.3.9.2.3</a>
+<!--page 690 indent 0-->
+ SEEK_CUR macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.9.2">7.21.9.2</a> sign and magnitude, <a href="#6.2.6.2">6.2.6.2</a>
+ SEEK_END macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.9.2">7.21.9.2</a> sign bit, <a href="#6.2.6.2">6.2.6.2</a>
+ SEEK_SET macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.9.2">7.21.9.2</a> signal function, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.22.4.5">7.22.4.5</a>, <a href="#7.22.4.7">7.22.4.7</a>
+ selection statements, <a href="#6.8.4">6.8.4</a> signal handler, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.3">5.2.3</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#7.14.2.1">7.14.2.1</a>
+ self-referential structure, <a href="#6.7.2.3">6.7.2.3</a> signal handling functions, <a href="#7.14.1">7.14.1</a>
+ semicolon punctuator (;), <a href="#6.7">6.7</a>, <a href="#6.7.2.1">6.7.2.1</a>, <a href="#6.8.3">6.8.3</a>, signal.h header, <a href="#7.14">7.14</a>, <a href="#7.30.6">7.30.6</a>
+ <a href="#6.8.5">6.8.5</a>, <a href="#6.8.6">6.8.6</a> signaling NaN, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#F.2.1">F.2.1</a>
+ separate compilation, <a href="#5.1.1.1">5.1.1.1</a> signals, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.3">5.2.3</a>, <a href="#7.14.1">7.14.1</a>
+ separate translation, <a href="#5.1.1.1">5.1.1.1</a> signbit macro, <a href="#7.12.3.6">7.12.3.6</a>, <a href="#F.3">F.3</a>
+ sequence points, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.5.13">6.5.13</a>, <a href="#6.5.14">6.5.14</a>, signed char type, <a href="#6.2.5">6.2.5</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>,
+ <a href="#6.5.15">6.5.15</a>, <a href="#6.5.17">6.5.17</a>, <a href="#6.7.3">6.7.3</a>, <a href="#6.7.3.1">6.7.3.1</a>, <a href="#6.7.6">6.7.6</a>, <a href="#6.8">6.8</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>
+ <a href="#7.1.4">7.1.4</a>, <a href="#7.21.6">7.21.6</a>, <a href="#7.22.5">7.22.5</a>, <a href="#7.28.2">7.28.2</a>, <a href="#C">C</a>, <a href="#K.3.6.3">K.3.6.3</a> signed character, <a href="#6.3.1.1">6.3.1.1</a>
+ sequenced after, see sequenced before signed integer types, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.4.4.1">6.4.4.1</a>
+ sequenced before, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.5">6.5</a>, <a href="#6.5.2.2">6.5.2.2</a>, <a href="#6.5.2.4">6.5.2.4</a>, signed type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.3.1.4">6.3.1.4</a>,
+ <a href="#6.5.16">6.5.16</a>, see also indeterminately sequenced, <a href="#6.3.1.8">6.3.1.8</a>
+ unsequenced signed types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>
+ sequencing of statements, <a href="#6.8">6.8</a> significand part, <a href="#6.4.4.2">6.4.4.2</a>
+ set_constraint_handler_s function, SIGSEGV macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a>
+ <a href="#K.3.1.4">K.3.1.4</a>, <a href="#K.3.6.1.1">K.3.6.1.1</a>, <a href="#K.3.6.1.2">K.3.6.1.2</a>, <a href="#K.3.6.1.3">K.3.6.1.3</a> SIGTERM macro, <a href="#7.14">7.14</a>
+ setbuf function, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.5.1">7.21.5.1</a>, <a href="#7.21.5.5">7.21.5.5</a> simple assignment operator (=), <a href="#6.5.16.1">6.5.16.1</a>
+ setjmp macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.13.1.1">7.13.1.1</a>, <a href="#7.13.2.1">7.13.2.1</a> sin functions, <a href="#7.12.4.6">7.12.4.6</a>, <a href="#F.10.1.6">F.10.1.6</a>
+ setjmp.h header, <a href="#7.13">7.13</a> sin type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
+ setlocale function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.11.2.1">7.11.2.1</a> single-byte character, <a href="#3.7.1">3.7.1</a>, <a href="#5.2.1.2">5.2.1.2</a>
+ setvbuf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.5.1">7.21.5.1</a>, single-byte/wide character conversion functions,
+ <a href="#7.21.5.5">7.21.5.5</a>, <a href="#7.21.5.6">7.21.5.6</a> <a href="#7.28.6.1">7.28.6.1</a>
+ shall, <a href="#4">4</a> single-precision arithmetic, <a href="#5.1.2.3">5.1.2.3</a>
+ shift expressions, <a href="#6.5.7">6.5.7</a> single-quote escape sequence (\'), <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>
+ shift sequence, <a href="#7.1.1">7.1.1</a> singularity, <a href="#7.12.1">7.12.1</a>
+ shift states, <a href="#5.2.1.2">5.2.1.2</a> sinh functions, <a href="#7.12.5.5">7.12.5.5</a>, <a href="#F.10.2.5">F.10.2.5</a>
+ short identifier, character, <a href="#5.2.4.1">5.2.4.1</a>, <a href="#6.4.3">6.4.3</a> sinh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
+ short int type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.21.6.1">7.21.6.1</a>, SIZE_MAX macro, <a href="#7.20.3">7.20.3</a>
+ <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a> size_t type, <a href="#6.2.8">6.2.8</a>, <a href="#6.5.3.4">6.5.3.4</a>, <a href="#7.19">7.19</a>, <a href="#7.20.3">7.20.3</a>, <a href="#7.21.1">7.21.1</a>,
+ short int type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22">7.22</a>, <a href="#7.23.1">7.23.1</a>, <a href="#7.26.1">7.26.1</a>, <a href="#7.27">7.27</a>,
+ <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.8">6.3.1.8</a> <a href="#7.28.1">7.28.1</a>, <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a>,
+ SHRT_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a> <a href="#K.3.5">K.3.5</a>, <a href="#K.3.6">K.3.6</a>, <a href="#K.3.7">K.3.7</a>, <a href="#K.3.8">K.3.8</a>, <a href="#K.3.9">K.3.9</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>
+ SHRT_MIN macro, <a href="#5.2.4.2.1">5.2.4.2.1</a> sizeof operator, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.3">6.5.3</a>, <a href="#6.5.3.4">6.5.3.4</a>
+ side effects, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.3.2.2">6.3.2.2</a>, <a href="#6.5">6.5</a>, <a href="#6.5.2.4">6.5.2.4</a>, snprintf function, <a href="#7.21.6.5">7.21.6.5</a>, <a href="#7.21.6.12">7.21.6.12</a>,
+ <a href="#6.5.16">6.5.16</a>, <a href="#6.7.9">6.7.9</a>, <a href="#6.8.3">6.8.3</a>, <a href="#7.6">7.6</a>, <a href="#7.6.1">7.6.1</a>, <a href="#7.21.7.5">7.21.7.5</a>, <a href="#K.3.5.3.5">K.3.5.3.5</a>
+ <a href="#7.21.7.7">7.21.7.7</a>, <a href="#7.28.3.6">7.28.3.6</a>, <a href="#7.28.3.8">7.28.3.8</a>, <a href="#F.8.1">F.8.1</a>, <a href="#F.9.1">F.9.1</a>, snprintf_s function, <a href="#K.3.5.3.5">K.3.5.3.5</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>
+ <a href="#F.9.3">F.9.3</a> snwprintf_s function, <a href="#K.3.9.1.3">K.3.9.1.3</a>, <a href="#K.3.9.1.4">K.3.9.1.4</a>
+ SIG_ATOMIC_MAX macro, <a href="#7.20.3">7.20.3</a> sorting utility functions, <a href="#7.22.5">7.22.5</a>, <a href="#K.3.6.3">K.3.6.3</a>
+ SIG_ATOMIC_MIN macro, <a href="#7.20.3">7.20.3</a> source character set, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>
+ sig_atomic_t type, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a>, source file, <a href="#5.1.1.1">5.1.1.1</a>
+ <a href="#7.20.3">7.20.3</a> name, <a href="#6.10.4">6.10.4</a>, <a href="#6.10.8.1">6.10.8.1</a>
+ SIG_DFL macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a> source file inclusion, <a href="#6.10.2">6.10.2</a>
+ SIG_ERR macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a> source lines, <a href="#5.1.1.2">5.1.1.2</a>
+ SIG_IGN macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a> source text, <a href="#5.1.1.2">5.1.1.2</a>
+ SIGABRT macro, <a href="#7.14">7.14</a>, <a href="#7.22.4.1">7.22.4.1</a> space character (' '), <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a>, <a href="#7.4.1.3">7.4.1.3</a>,
+ SIGFPE macro, <a href="#7.12.1">7.12.1</a>, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a>, <a href="#J.5.17">J.5.17</a> <a href="#7.4.1.10">7.4.1.10</a>, <a href="#7.29.2.1.3">7.29.2.1.3</a>
+ SIGILL macro, <a href="#7.14">7.14</a>, <a href="#7.14.1.1">7.14.1.1</a> sprintf function, <a href="#7.21.6.6">7.21.6.6</a>, <a href="#7.21.6.13">7.21.6.13</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>
+ SIGINT macro, <a href="#7.14">7.14</a> sprintf_s function, <a href="#K.3.5.3.5">K.3.5.3.5</a>, <a href="#K.3.5.3.6">K.3.5.3.6</a>
+<!--page 691 indent 0-->
+ sqrt functions, <a href="#7.12.7.5">7.12.7.5</a>, <a href="#F.3">F.3</a>, <a href="#F.10.4.5">F.10.4.5</a> do, <a href="#6.8.5.2">6.8.5.2</a>
+ sqrt type-generic macro, <a href="#7.24">7.24</a> else, <a href="#6.8.4.1">6.8.4.1</a>
+ srand function, <a href="#7.22.2.2">7.22.2.2</a> expression, <a href="#6.8.3">6.8.3</a>
+ sscanf function, <a href="#7.21.6.7">7.21.6.7</a>, <a href="#7.21.6.14">7.21.6.14</a> for, <a href="#6.8.5.3">6.8.5.3</a>
+ sscanf_s function, <a href="#K.3.5.3.7">K.3.5.3.7</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> goto, <a href="#6.8.6.1">6.8.6.1</a>
+ standard error stream, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.10.4">7.21.10.4</a> if, <a href="#6.8.4.1">6.8.4.1</a>
+ standard headers, <a href="#4">4</a>, <a href="#7.1.2">7.1.2</a> iteration, <a href="#6.8.5">6.8.5</a>
+ <a href="#7.2"><assert.h></a>, <a href="#7.2">7.2</a> jump, <a href="#6.8.6">6.8.6</a>
+ <a href="#7.3"><complex.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.3">7.3</a>, labeled, <a href="#6.8.1">6.8.1</a>
+ <a href="#7.24">7.24</a>, <a href="#7.30.1">7.30.1</a>, <a href="#G.6">G.6</a>, <a href="#J.5.17">J.5.17</a> null, <a href="#6.8.3">6.8.3</a>
+ <a href="#7.4"><ctype.h></a>, <a href="#7.4">7.4</a>, <a href="#7.30.2">7.30.2</a> return, <a href="#6.8.6.4">6.8.6.4</a>, <a href="#F.6">F.6</a>
+ <a href="#7.5"><errno.h></a>, <a href="#7.5">7.5</a>, <a href="#7.30.3">7.30.3</a>, <a href="#K.3.2">K.3.2</a> selection, <a href="#6.8.4">6.8.4</a>
+ <a href="#7.6"><fenv.h></a>, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.6">7.6</a>, <a href="#7.12">7.12</a>, <a href="#F">F</a>, <a href="#H">H</a> sequencing, <a href="#6.8">6.8</a>
+ <a href="#7.7"><float.h></a>, <a href="#4">4</a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.7">7.7</a>, <a href="#7.22.1.3">7.22.1.3</a>, switch, <a href="#6.8.4.2">6.8.4.2</a>
+ <a href="#7.28.4.1.1">7.28.4.1.1</a> while, <a href="#6.8.5.1">6.8.5.1</a>
+ <a href="#7.8"><inttypes.h></a>, <a href="#7.8">7.8</a>, <a href="#7.30.4">7.30.4</a> static assertions, <a href="#6.7.10">6.7.10</a>
+ <a href="#7.9"><iso646.h></a>, <a href="#4">4</a>, <a href="#7.9">7.9</a> static storage duration, <a href="#6.2.4">6.2.4</a>
+ <a href="#7.10"><limits.h></a>, <a href="#4">4</a>, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#6.2.5">6.2.5</a>, <a href="#7.10">7.10</a> static storage-class specifier, <a href="#6.2.2">6.2.2</a>, <a href="#6.2.4">6.2.4</a>, <a href="#6.7.1">6.7.1</a>
+ <a href="#7.11"><locale.h></a>, <a href="#7.11">7.11</a>, <a href="#7.30.5">7.30.5</a> static, in array declarators, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.7.6.3">6.7.6.3</a>
+ <a href="#7.12"><math.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#6.5">6.5</a>, <a href="#7.12">7.12</a>, <a href="#7.24">7.24</a>, <a href="#F">F</a>, <a href="#F.10">F.10</a>, static_assert declaration, <a href="#6.7.10">6.7.10</a>
+ <a href="#J.5.17">J.5.17</a> static_assert macro, <a href="#7.2">7.2</a>
+ <a href="#7.13"><setjmp.h></a>, <a href="#7.13">7.13</a> stdalign.h header, <a href="#4">4</a>, <a href="#7.15">7.15</a>
+ <a href="#7.14"><signal.h></a>, <a href="#7.14">7.14</a>, <a href="#7.30.6">7.30.6</a> stdarg.h header, <a href="#4">4</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#7.16">7.16</a>
+ <a href="#7.15"><stdalign.h></a>, <a href="#4">4</a>, <a href="#7.15">7.15</a> stdatomic.h header, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.17">7.17</a>
+ <a href="#7.16"><stdarg.h></a>, <a href="#4">4</a>, <a href="#6.7.6.3">6.7.6.3</a>, <a href="#7.16">7.16</a> stdbool.h header, <a href="#4">4</a>, <a href="#7.18">7.18</a>, <a href="#7.30.7">7.30.7</a>, <a href="#H">H</a>
+ <a href="#7.17"><stdatomic.h></a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.17">7.17</a> STDC, <a href="#6.10.6">6.10.6</a>, <a href="#6.11.8">6.11.8</a>
+ <a href="#7.18"><stdbool.h></a>, <a href="#4">4</a>, <a href="#7.18">7.18</a>, <a href="#7.30.7">7.30.7</a>, <a href="#H">H</a> stddef.h header, <a href="#4">4</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.4.4.4">6.4.4.4</a>,
+ <a href="#7.19"><stddef.h></a>, <a href="#4">4</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.5.3.4">6.5.3.4</a>, <a href="#6.5.6">6.5.6</a>, <a href="#7.19">7.19</a>, <a href="#K.3.3">K.3.3</a>
+ <a href="#6.4.5">6.4.5</a>, <a href="#6.5.3.4">6.5.3.4</a>, <a href="#6.5.6">6.5.6</a>, <a href="#7.19">7.19</a>, <a href="#K.3.3">K.3.3</a> stderr macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>
+ <a href="#7.20"><stdint.h></a>, <a href="#4">4</a>, <a href="#5.2.4.2">5.2.4.2</a>, <a href="#6.10.1">6.10.1</a>, <a href="#7.8">7.8</a>, <a href="#7.20">7.20</a>, stdin macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.4">7.21.6.4</a>,
+ <a href="#7.30.8">7.30.8</a>, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a> <a href="#7.21.7.6">7.21.7.6</a>, <a href="#7.28.2.12">7.28.2.12</a>, <a href="#7.28.3.7">7.28.3.7</a>, <a href="#K.3.5.3.4">K.3.5.3.4</a>,
+ <a href="#7.21"><stdio.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21">7.21</a>, <a href="#7.30.9">7.30.9</a>, <a href="#F">F</a>, <a href="#K.3.5">K.3.5</a> <a href="#K.3.5.4.1">K.3.5.4.1</a>, <a href="#K.3.9.1.14">K.3.9.1.14</a>
+ <a href="#7.22"><stdlib.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.22">7.22</a>, <a href="#7.30.10">7.30.10</a>, <a href="#F">F</a>, stdint.h header, <a href="#4">4</a>, <a href="#5.2.4.2">5.2.4.2</a>, <a href="#6.10.1">6.10.1</a>, <a href="#7.8">7.8</a>, <a href="#7.20">7.20</a>,
+ <a href="#K.3.1.4">K.3.1.4</a>, <a href="#K.3.6">K.3.6</a> <a href="#7.30.8">7.30.8</a>, <a href="#K.3.3">K.3.3</a>, <a href="#K.3.4">K.3.4</a>
+ <a href="#7.23"><string.h></a>, <a href="#7.23">7.23</a>, <a href="#7.30.11">7.30.11</a>, <a href="#K.3.7">K.3.7</a> stdio.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21">7.21</a>, <a href="#7.30.9">7.30.9</a>, <a href="#F">F</a>, <a href="#K.3.5">K.3.5</a>
+ <a href="#7.24"><tgmath.h></a>, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> stdlib.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.22">7.22</a>, <a href="#7.30.10">7.30.10</a>, <a href="#F">F</a>,
+ <a href="#7.25"><threads.h></a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.25">7.25</a> <a href="#K.3.1.4">K.3.1.4</a>, <a href="#K.3.6">K.3.6</a>
+ <a href="#7.26"><time.h></a>, <a href="#7.26">7.26</a>, <a href="#K.3.8">K.3.8</a> stdout macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.3">7.21.6.3</a>,
+ <a href="#7.27"><uchar.h></a>, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27">7.27</a> <a href="#7.21.7.8">7.21.7.8</a>, <a href="#7.21.7.9">7.21.7.9</a>, <a href="#7.28.2.11">7.28.2.11</a>, <a href="#7.28.3.9">7.28.3.9</a>
+ <a href="#7.28"><wchar.h></a>, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.28">7.28</a>, <a href="#7.30.12">7.30.12</a>, storage duration, <a href="#6.2.4">6.2.4</a>
+ <a href="#F">F</a>, <a href="#K.3.9">K.3.9</a> storage order of array, <a href="#6.5.2.1">6.5.2.1</a>
+ <a href="#7.29"><wctype.h></a>, <a href="#7.29">7.29</a>, <a href="#7.30.13">7.30.13</a> storage unit (bit-field), <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.7.2.1">6.7.2.1</a>
+ standard input stream, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> storage-class specifiers, <a href="#6.7.1">6.7.1</a>, <a href="#6.11.5">6.11.5</a>
+ standard integer types, <a href="#6.2.5">6.2.5</a> strcat function, <a href="#7.23.3.1">7.23.3.1</a>
+ standard output stream, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> strcat_s function, <a href="#K.3.7.2.1">K.3.7.2.1</a>
+ standard signed integer types, <a href="#6.2.5">6.2.5</a> strchr function, <a href="#7.23.5.2">7.23.5.2</a>
+ state-dependent encoding, <a href="#5.2.1.2">5.2.1.2</a>, <a href="#7.22.7">7.22.7</a>, <a href="#K.3.6.4">K.3.6.4</a> strcmp function, <a href="#7.23.4">7.23.4</a>, <a href="#7.23.4.2">7.23.4.2</a>
+ statements, <a href="#6.8">6.8</a> strcoll function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.23.4.3">7.23.4.3</a>, <a href="#7.23.4.5">7.23.4.5</a>
+ break, <a href="#6.8.6.3">6.8.6.3</a> strcpy function, <a href="#7.23.2.3">7.23.2.3</a>
+ compound, <a href="#6.8.2">6.8.2</a> strcpy_s function, <a href="#K.3.7.1.3">K.3.7.1.3</a>
+ continue, <a href="#6.8.6.2">6.8.6.2</a> strcspn function, <a href="#7.23.5.3">7.23.5.3</a>
+<!--page 692 indent 0-->
+ streams, <a href="#7.21.2">7.21.2</a>, <a href="#7.22.4.4">7.22.4.4</a> <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ fully buffered, <a href="#7.21.3">7.21.3</a> strtoull function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1.2">7.22.1.2</a>, <a href="#7.22.1.4">7.22.1.4</a>
+ line buffered, <a href="#7.21.3">7.21.3</a> strtoumax function, <a href="#7.8.2.3">7.8.2.3</a>
+ orientation, <a href="#7.21.2">7.21.2</a> struct hack, see flexible array member
+ standard error, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> struct lconv, <a href="#7.11">7.11</a>
+ standard input, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> struct tm, <a href="#7.26.1">7.26.1</a>
+ standard output, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.3">7.21.3</a> structure
+ unbuffered, <a href="#7.21.3">7.21.3</a> arrow operator (->), <a href="#6.5.2.3">6.5.2.3</a>
+ strerror function, <a href="#7.21.10.4">7.21.10.4</a>, <a href="#7.23.6.2">7.23.6.2</a> content, <a href="#6.7.2.3">6.7.2.3</a>
+ strerror_s function, <a href="#K.3.7.4.2">K.3.7.4.2</a>, <a href="#K.3.7.4.3">K.3.7.4.3</a> dot operator (.), <a href="#6.5.2.3">6.5.2.3</a>
+ strerrorlen_s function, <a href="#K.3.7.4.3">K.3.7.4.3</a> initialization, <a href="#6.7.9">6.7.9</a>
+ strftime function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.26.3">7.26.3</a>, <a href="#7.26.3.5">7.26.3.5</a>, member alignment, <a href="#6.7.2.1">6.7.2.1</a>
+ <a href="#7.28.5.1">7.28.5.1</a>, <a href="#K.3.8.2">K.3.8.2</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a> member name space, <a href="#6.2.3">6.2.3</a>
+ stricter, <a href="#6.2.8">6.2.8</a> member operator (.), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.3">6.5.2.3</a>
+ strictly conforming program, <a href="#4">4</a> pointer operator (->), <a href="#6.5.2.3">6.5.2.3</a>
+ string, <a href="#7.1.1">7.1.1</a> specifier, <a href="#6.7.2.1">6.7.2.1</a>
+ comparison functions, <a href="#7.23.4">7.23.4</a> tag, <a href="#6.2.3">6.2.3</a>, <a href="#6.7.2.3">6.7.2.3</a>
+ concatenation functions, <a href="#7.23.3">7.23.3</a>, <a href="#K.3.7.2">K.3.7.2</a> type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2.1">6.7.2.1</a>
+ conversion functions, <a href="#7.11.1.1">7.11.1.1</a> strxfrm function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.23.4.5">7.23.4.5</a>
+ copying functions, <a href="#7.23.2">7.23.2</a>, <a href="#K.3.7.1">K.3.7.1</a> subnormal floating-point numbers, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ library function conventions, <a href="#7.23.1">7.23.1</a> subscripting, <a href="#6.5.2.1">6.5.2.1</a>
+ literal, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1">5.2.1</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.5.1">6.5.1</a>, <a href="#6.7.9">6.7.9</a> subtraction assignment operator (-=), <a href="#6.5.16.2">6.5.16.2</a>
+ miscellaneous functions, <a href="#7.23.6">7.23.6</a>, <a href="#K.3.7.4">K.3.7.4</a> subtraction operator (-), <a href="#6.2.6.2">6.2.6.2</a>, <a href="#6.5.6">6.5.6</a>, <a href="#F.3">F.3</a>, <a href="#G.5.2">G.5.2</a>
+ numeric conversion functions, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1">7.22.1</a> suffix
+ search functions, <a href="#7.23.5">7.23.5</a>, <a href="#K.3.7.3">K.3.7.3</a> floating constant, <a href="#6.4.4.2">6.4.4.2</a>
+ string handling header, <a href="#7.23">7.23</a>, <a href="#K.3.7">K.3.7</a> integer constant, <a href="#6.4.4.1">6.4.4.1</a>
+ string.h header, <a href="#7.23">7.23</a>, <a href="#7.30.11">7.30.11</a>, <a href="#K.3.7">K.3.7</a> switch body, <a href="#6.8.4.2">6.8.4.2</a>
+ stringizing, <a href="#6.10.3.2">6.10.3.2</a>, <a href="#6.10.9">6.10.9</a> switch case label, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a>
+ strlen function, <a href="#7.23.6.3">7.23.6.3</a> switch default label, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a>
+ strncat function, <a href="#7.23.3.2">7.23.3.2</a> switch statement, <a href="#6.8.1">6.8.1</a>, <a href="#6.8.4.2">6.8.4.2</a>
+ strncat_s function, <a href="#K.3.7.2.2">K.3.7.2.2</a> swprintf function, <a href="#7.28.2.3">7.28.2.3</a>, <a href="#7.28.2.7">7.28.2.7</a>,
+ strncmp function, <a href="#7.23.4">7.23.4</a>, <a href="#7.23.4.4">7.23.4.4</a> <a href="#K.3.9.1.3">K.3.9.1.3</a>, <a href="#K.3.9.1.4">K.3.9.1.4</a>
+ strncpy function, <a href="#7.23.2.4">7.23.2.4</a> swprintf_s function, <a href="#K.3.9.1.3">K.3.9.1.3</a>, <a href="#K.3.9.1.4">K.3.9.1.4</a>
+ strncpy_s function, <a href="#K.3.7.1.4">K.3.7.1.4</a> swscanf function, <a href="#7.28.2.4">7.28.2.4</a>, <a href="#7.28.2.8">7.28.2.8</a>
+ strnlen_s function, <a href="#K.3.7.4.4">K.3.7.4.4</a> swscanf_s function, <a href="#K.3.9.1.5">K.3.9.1.5</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>
+ stronger, <a href="#6.2.8">6.2.8</a> symbols, <a href="#3">3</a>
+ strpbrk function, <a href="#7.23.5.4">7.23.5.4</a> synchronization operation, <a href="#5.1.2.4">5.1.2.4</a>
+ strrchr function, <a href="#7.23.5.5">7.23.5.5</a> synchronize with, <a href="#5.1.2.4">5.1.2.4</a>
+ strspn function, <a href="#7.23.5.6">7.23.5.6</a> syntactic categories, <a href="#6.1">6.1</a>
+ strstr function, <a href="#7.23.5.7">7.23.5.7</a> syntax notation, <a href="#6.1">6.1</a>
+ strtod function, <a href="#7.12.11.2">7.12.11.2</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.3">7.22.1.3</a>, syntax rule precedence, <a href="#5.1.1.2">5.1.1.2</a>
+ <a href="#7.28.2.2">7.28.2.2</a>, <a href="#F.3">F.3</a> syntax summary, language, <a href="#A">A</a>
+ strtof function, <a href="#7.12.11.2">7.12.11.2</a>, <a href="#7.22.1.3">7.22.1.3</a>, <a href="#F.3">F.3</a> system function, <a href="#7.22.4.8">7.22.4.8</a>
+ strtoimax function, <a href="#7.8.2.3">7.8.2.3</a>
+ strtok function, <a href="#7.23.5.8">7.23.5.8</a> tab characters, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a>
+ strtok_s function, <a href="#K.3.7.3.1">K.3.7.3.1</a> tag compatibility, <a href="#6.2.7">6.2.7</a>
+ strtol function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.2">7.22.1.2</a>, tag name space, <a href="#6.2.3">6.2.3</a>
+ <a href="#7.22.1.4">7.22.1.4</a>, <a href="#7.28.2.2">7.28.2.2</a> tags, <a href="#6.7.2.3">6.7.2.3</a>
+ strtold function, <a href="#7.12.11.2">7.12.11.2</a>, <a href="#7.22.1.3">7.22.1.3</a>, <a href="#F.3">F.3</a> tan functions, <a href="#7.12.4.7">7.12.4.7</a>, <a href="#F.10.1.7">F.10.1.7</a>
+ strtoll function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.22.1.2">7.22.1.2</a>, <a href="#7.22.1.4">7.22.1.4</a> tan type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
+ strtoul function, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22.1.2">7.22.1.2</a>, tanh functions, <a href="#7.12.5.6">7.12.5.6</a>, <a href="#F.10.2.6">F.10.2.6</a>
+<!--page 693 indent 0-->
+ tanh type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> toupper function, <a href="#7.4.2.2">7.4.2.2</a>
+ temporary lifetime, <a href="#6.2.4">6.2.4</a> towctrans function, <a href="#7.29.3.2.1">7.29.3.2.1</a>, <a href="#7.29.3.2.2">7.29.3.2.2</a>
+ tentative definition, <a href="#6.9.2">6.9.2</a> towlower function, <a href="#7.29.3.1.1">7.29.3.1.1</a>, <a href="#7.29.3.2.1">7.29.3.2.1</a>
+ terms, <a href="#3">3</a> towupper function, <a href="#7.29.3.1.2">7.29.3.1.2</a>, <a href="#7.29.3.2.1">7.29.3.2.1</a>
+ text streams, <a href="#7.21.2">7.21.2</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.2">7.21.9.2</a>, <a href="#7.21.9.4">7.21.9.4</a> translation environment, <a href="#5">5</a>, <a href="#5.1.1">5.1.1</a>
+ tgamma functions, <a href="#7.12.8.4">7.12.8.4</a>, <a href="#F.10.5.4">F.10.5.4</a> translation limits, <a href="#5.2.4.1">5.2.4.1</a>
+ tgamma type-generic macro, <a href="#7.24">7.24</a> translation phases, <a href="#5.1.1.2">5.1.1.2</a>
+ tgmath.h header, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a> translation unit, <a href="#5.1.1.1">5.1.1.1</a>, <a href="#6.9">6.9</a>
+ thrd_create function, <a href="#7.25.1">7.25.1</a>, <a href="#7.25.5.1">7.25.5.1</a> trap, see perform a trap
+ thrd_current function, <a href="#7.25.5.2">7.25.5.2</a> trap representation, <a href="#3.19.4">3.19.4</a>, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.2.6.2">6.2.6.2</a>,
+ thrd_detach function, <a href="#7.25.5.3">7.25.5.3</a> <a href="#6.3.2.3">6.3.2.3</a>, <a href="#6.5.2.3">6.5.2.3</a>
+ thrd_equal function, <a href="#7.25.5.4">7.25.5.4</a> trigonometric functions
+ thrd_exit function, <a href="#7.25.5.5">7.25.5.5</a> complex, <a href="#7.3.5">7.3.5</a>, <a href="#G.6.1">G.6.1</a>
+ thrd_join function, <a href="#7.25.5.6">7.25.5.6</a> real, <a href="#7.12.4">7.12.4</a>, <a href="#F.10.1">F.10.1</a>
+ thrd_sleep function, <a href="#7.25.5.7">7.25.5.7</a> trigraph sequences, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#5.2.1.1">5.2.1.1</a>
+ thrd_start_t type, <a href="#7.25.1">7.25.1</a> true macro, <a href="#7.18">7.18</a>
+ thrd_t type, <a href="#7.25.1">7.25.1</a> trunc functions, <a href="#7.12.9.8">7.12.9.8</a>, <a href="#F.10.6.8">F.10.6.8</a>
+ thrd_yield function, <a href="#7.25.5.8">7.25.5.8</a> trunc type-generic macro, <a href="#7.24">7.24</a>
+ thread of execution, <a href="#5.1.2.4">5.1.2.4</a>, <a href="#7.1.4">7.1.4</a>, <a href="#7.6">7.6</a>, <a href="#7.22.4.6">7.22.4.6</a> truncation, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#7.12.9.8">7.12.9.8</a>, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.5.3">7.21.5.3</a>
+ thread storage duration, <a href="#6.2.4">6.2.4</a>, <a href="#7.6">7.6</a> truncation toward zero, <a href="#6.5.5">6.5.5</a>
+ threads header, <a href="#7.25">7.25</a> tss_create function, <a href="#7.25.6.1">7.25.6.1</a>
+ threads.h header, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.1.2">7.1.2</a>, <a href="#7.25">7.25</a> tss_delete function, <a href="#7.25.6.2">7.25.6.2</a>
+ time TSS_DTOR_ITERATIONS macro, <a href="#7.25.1">7.25.1</a>
+ broken down, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.3">7.26.2.3</a>, <a href="#7.26.3">7.26.3</a>, <a href="#7.26.3.1">7.26.3.1</a>, tss_dtor_t type, <a href="#7.25.1">7.25.1</a>
+ <a href="#7.26.3.3">7.26.3.3</a>, <a href="#7.26.3.4">7.26.3.4</a>, <a href="#7.26.3.5">7.26.3.5</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a>, tss_get function, <a href="#7.25.6.3">7.25.6.3</a>
+ <a href="#K.3.8.2.3">K.3.8.2.3</a>, <a href="#K.3.8.2.4">K.3.8.2.4</a> tss_set function, <a href="#7.25.6.4">7.25.6.4</a>
+ calendar, <a href="#7.26.1">7.26.1</a>, <a href="#7.26.2.2">7.26.2.2</a>, <a href="#7.26.2.3">7.26.2.3</a>, <a href="#7.26.2.4">7.26.2.4</a>, tss_t type, <a href="#7.25.1">7.25.1</a>
+ <a href="#7.26.3.2">7.26.3.2</a>, <a href="#7.26.3.3">7.26.3.3</a>, <a href="#7.26.3.4">7.26.3.4</a>, <a href="#K.3.8.2.2">K.3.8.2.2</a>, two's complement, <a href="#6.2.6.2">6.2.6.2</a>, <a href="#7.20.1.1">7.20.1.1</a>
+ <a href="#K.3.8.2.3">K.3.8.2.3</a>, <a href="#K.3.8.2.4">K.3.8.2.4</a> type category, <a href="#6.2.5">6.2.5</a>
+ components, <a href="#7.26.1">7.26.1</a>, <a href="#K.3.8.1">K.3.8.1</a> type conversion, <a href="#6.3">6.3</a>
+ conversion functions, <a href="#7.26.3">7.26.3</a>, <a href="#K.3.8.2">K.3.8.2</a> type definitions, <a href="#6.7.8">6.7.8</a>
+ wide character, <a href="#7.28.5">7.28.5</a> type domain, <a href="#6.2.5">6.2.5</a>, <a href="#G.2">G.2</a>
+ local, <a href="#7.26.1">7.26.1</a> type names, <a href="#6.7.7">6.7.7</a>
+ manipulation functions, <a href="#7.26.2">7.26.2</a> type punning, <a href="#6.5.2.3">6.5.2.3</a>
+ normalized broken down, <a href="#K.3.8.1">K.3.8.1</a>, <a href="#K.3.8.2.1">K.3.8.2.1</a> type qualifiers, <a href="#6.7.3">6.7.3</a>
+ time function, <a href="#7.26.2.4">7.26.2.4</a> type specifiers, <a href="#6.7.2">6.7.2</a>
+ time.h header, <a href="#7.26">7.26</a>, <a href="#K.3.8">K.3.8</a> type-generic macro, <a href="#7.24">7.24</a>, <a href="#G.7">G.7</a>
+ time_t type, <a href="#7.26.1">7.26.1</a> typedef declaration, <a href="#6.7.8">6.7.8</a>
+ TIME_UTC macro, <a href="#7.25.7.1">7.25.7.1</a> typedef storage-class specifier, <a href="#6.7.1">6.7.1</a>, <a href="#6.7.8">6.7.8</a>
+ tm structure type, <a href="#7.26.1">7.26.1</a>, <a href="#7.28.1">7.28.1</a>, <a href="#K.3.8.1">K.3.8.1</a> types, <a href="#6.2.5">6.2.5</a>
+ TMP_MAX macro, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.4.3">7.21.4.3</a>, <a href="#7.21.4.4">7.21.4.4</a> atomic, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.2.5">6.2.5</a>, <a href="#6.2.6.1">6.2.6.1</a>, <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.3">6.5.2.3</a>,
+ TMP_MAX_S macro, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.5.1.1">K.3.5.1.1</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> <a href="#6.5.2.4">6.5.2.4</a>, <a href="#6.5.16.2">6.5.16.2</a>, <a href="#6.7.2.4">6.7.2.4</a>, <a href="#6.10.8.3">6.10.8.3</a>, <a href="#7.17.6">7.17.6</a>
+ tmpfile function, <a href="#7.21.4.3">7.21.4.3</a>, <a href="#7.22.4.4">7.22.4.4</a> character, <a href="#6.7.9">6.7.9</a>
+ tmpfile_s function, <a href="#K.3.5.1.1">K.3.5.1.1</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> compatible, <a href="#6.2.7">6.2.7</a>, <a href="#6.7.2">6.7.2</a>, <a href="#6.7.3">6.7.3</a>, <a href="#6.7.6">6.7.6</a>
+ tmpnam function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.4.3">7.21.4.3</a>, <a href="#7.21.4.4">7.21.4.4</a>, complex, <a href="#6.2.5">6.2.5</a>, <a href="#G">G</a>
+ <a href="#K.3.5.1.2">K.3.5.1.2</a> composite, <a href="#6.2.7">6.2.7</a>
+ tmpnam_s function, <a href="#K.3.5">K.3.5</a>, <a href="#K.3.5.1.1">K.3.5.1.1</a>, <a href="#K.3.5.1.2">K.3.5.1.2</a> const qualified, <a href="#6.7.3">6.7.3</a>
+ token, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>, see also preprocessing tokens conversions, <a href="#6.3">6.3</a>
+ token concatenation, <a href="#6.10.3.3">6.10.3.3</a> imaginary, <a href="#G">G</a>
+ token pasting, <a href="#6.10.3.3">6.10.3.3</a> restrict qualified, <a href="#6.7.3">6.7.3</a>
+ tolower function, <a href="#7.4.2.1">7.4.2.1</a> volatile qualified, <a href="#6.7.3">6.7.3</a>
+<!--page 694 indent 0-->
+ uchar.h header, <a href="#6.4.4.4">6.4.4.4</a>, <a href="#6.4.5">6.4.5</a>, <a href="#7.27">7.27</a> universal character name, <a href="#6.4.3">6.4.3</a>
+ UCHAR_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a> unnormalized floating-point numbers, <a href="#5.2.4.2.2">5.2.4.2.2</a>
+ UINT_FASTN_MAX macros, <a href="#7.20.2.3">7.20.2.3</a> unqualified type, <a href="#6.2.5">6.2.5</a>
+ uint_fastN_t types, <a href="#7.20.1.3">7.20.1.3</a> unqualified version of type, <a href="#6.2.5">6.2.5</a>
+ uint_least16_t type, <a href="#7.27">7.27</a> unsequenced, <a href="#5.1.2.3">5.1.2.3</a>, <a href="#6.5">6.5</a>, <a href="#6.5.16">6.5.16</a>, see also
+ uint_least32_t type, <a href="#7.27">7.27</a> indeterminately sequenced, sequenced
+ UINT_LEASTN_MAX macros, <a href="#7.20.2.2">7.20.2.2</a> before
+ uint_leastN_t types, <a href="#7.20.1.2">7.20.1.2</a> unsigned char type, <a href="#K.3.5.3.2">K.3.5.3.2</a>, <a href="#K.3.9.1.2">K.3.9.1.2</a>
+ UINT_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a> unsigned integer suffix, u or <a href="#U">U</a>, <a href="#6.4.4.1">6.4.4.1</a>
+ UINTMAX_C macro, <a href="#7.20.4.2">7.20.4.2</a> unsigned integer types, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.1.3">6.3.1.3</a>, <a href="#6.4.4.1">6.4.4.1</a>
+ UINTMAX_MAX macro, <a href="#7.8.2.3">7.8.2.3</a>, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.20.2.5">7.20.2.5</a> unsigned type conversion, <a href="#6.3.1.1">6.3.1.1</a>, <a href="#6.3.1.3">6.3.1.3</a>,
+ uintmax_t type, <a href="#7.20.1.5">7.20.1.5</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#6.3.1.4">6.3.1.4</a>, <a href="#6.3.1.8">6.3.1.8</a>
+ <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a> unsigned types, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2">6.7.2</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>,
+ UINTN_C macros, <a href="#7.20.4.1">7.20.4.1</a> <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ UINTN_MAX macros, <a href="#7.20.2.1">7.20.2.1</a> unspecified behavior, <a href="#3.4.4">3.4.4</a>, <a href="#4">4</a>, <a href="#J.1">J.1</a>
+ uintN_t types, <a href="#7.20.1.1">7.20.1.1</a> unspecified value, <a href="#3.19.3">3.19.3</a>
+ UINTPTR_MAX macro, <a href="#7.20.2.4">7.20.2.4</a> uppercase letter, <a href="#5.2.1">5.2.1</a>
+ uintptr_t type, <a href="#7.20.1.4">7.20.1.4</a> use of library functions, <a href="#7.1.4">7.1.4</a>
+ ULLONG_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, USHRT_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>
+ <a href="#7.28.4.1.2">7.28.4.1.2</a> usual arithmetic conversions, <a href="#6.3.1.8">6.3.1.8</a>, <a href="#6.5.5">6.5.5</a>, <a href="#6.5.6">6.5.6</a>,
+ ULONG_MAX macro, <a href="#5.2.4.2.1">5.2.4.2.1</a>, <a href="#7.22.1.4">7.22.1.4</a>, <a href="#6.5.8">6.5.8</a>, <a href="#6.5.9">6.5.9</a>, <a href="#6.5.10">6.5.10</a>, <a href="#6.5.11">6.5.11</a>, <a href="#6.5.12">6.5.12</a>, <a href="#6.5.15">6.5.15</a>
+ <a href="#7.28.4.1.2">7.28.4.1.2</a> UTF-16, <a href="#6.10.8.2">6.10.8.2</a>
+ unary arithmetic operators, <a href="#6.5.3.3">6.5.3.3</a> UTF-32, <a href="#6.10.8.2">6.10.8.2</a>
+ unary expression, <a href="#6.5.3">6.5.3</a> UTF-8 string literal, see string literal
+ unary minus operator (-), <a href="#6.5.3.3">6.5.3.3</a>, <a href="#F.3">F.3</a> utilities, general, <a href="#7.22">7.22</a>, <a href="#K.3.6">K.3.6</a>
+ unary operators, <a href="#6.5.3">6.5.3</a> wide string, <a href="#7.28.4">7.28.4</a>, <a href="#K.3.9.2">K.3.9.2</a>
+ unary plus operator (+), <a href="#6.5.3.3">6.5.3.3</a>
+ unbuffered stream, <a href="#7.21.3">7.21.3</a> va_arg macro, <a href="#7.16">7.16</a>, <a href="#7.16.1">7.16.1</a>, <a href="#7.16.1.1">7.16.1.1</a>, <a href="#7.16.1.2">7.16.1.2</a>,
+ undef preprocessing directive, <a href="#6.10.3.5">6.10.3.5</a>, <a href="#7.1.3">7.1.3</a>, <a href="#7.16.1.4">7.16.1.4</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#7.21.6.10">7.21.6.10</a>,
+ <a href="#7.1.4">7.1.4</a> <a href="#7.21.6.11">7.21.6.11</a>, <a href="#7.21.6.12">7.21.6.12</a>, <a href="#7.21.6.13">7.21.6.13</a>, <a href="#7.21.6.14">7.21.6.14</a>,
+ undefined behavior, <a href="#3.4.3">3.4.3</a>, <a href="#4">4</a>, <a href="#J.2">J.2</a> <a href="#7.28.2.5">7.28.2.5</a>, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.7">7.28.2.7</a>, <a href="#7.28.2.8">7.28.2.8</a>,
+ underscore character, <a href="#6.4.2.1">6.4.2.1</a> <a href="#7.28.2.9">7.28.2.9</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>,
+ underscore, leading, in identifier, <a href="#7.1.3">7.1.3</a> <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>
+ ungetc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.7.10">7.21.7.10</a>, <a href="#7.21.9.2">7.21.9.2</a>, va_copy macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.16">7.16</a>, <a href="#7.16.1">7.16.1</a>, <a href="#7.16.1.1">7.16.1.1</a>,
+ <a href="#7.21.9.3">7.21.9.3</a> <a href="#7.16.1.2">7.16.1.2</a>, <a href="#7.16.1.3">7.16.1.3</a>
+ ungetwc function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3.10">7.28.3.10</a> va_end macro, <a href="#7.1.3">7.1.3</a>, <a href="#7.16">7.16</a>, <a href="#7.16.1">7.16.1</a>, <a href="#7.16.1.3">7.16.1.3</a>,
+ Unicode, <a href="#7.27">7.27</a>, see also char16_t type, <a href="#7.16.1.4">7.16.1.4</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.9">7.21.6.9</a>, <a href="#7.21.6.10">7.21.6.10</a>,
+ char32_t type, wchar_t type <a href="#7.21.6.11">7.21.6.11</a>, <a href="#7.21.6.12">7.21.6.12</a>, <a href="#7.21.6.13">7.21.6.13</a>, <a href="#7.21.6.14">7.21.6.14</a>,
+ Unicode required set, <a href="#6.10.8.2">6.10.8.2</a> <a href="#7.28.2.5">7.28.2.5</a>, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.2.7">7.28.2.7</a>, <a href="#7.28.2.8">7.28.2.8</a>,
+ union <a href="#7.28.2.9">7.28.2.9</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>,
+ arrow operator (->), <a href="#6.5.2.3">6.5.2.3</a> <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.7">K.3.9.1.7</a>, <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>
+ content, <a href="#6.7.2.3">6.7.2.3</a> va_list type, <a href="#7.16">7.16</a>, <a href="#7.16.1.3">7.16.1.3</a>
+ dot operator (.), <a href="#6.5.2.3">6.5.2.3</a> va_start macro, <a href="#7.16">7.16</a>, <a href="#7.16.1">7.16.1</a>, <a href="#7.16.1.1">7.16.1.1</a>,
+ initialization, <a href="#6.7.9">6.7.9</a> <a href="#7.16.1.2">7.16.1.2</a>, <a href="#7.16.1.3">7.16.1.3</a>, <a href="#7.16.1.4">7.16.1.4</a>, <a href="#7.21.6.8">7.21.6.8</a>,
+ member alignment, <a href="#6.7.2.1">6.7.2.1</a> <a href="#7.21.6.9">7.21.6.9</a>, <a href="#7.21.6.10">7.21.6.10</a>, <a href="#7.21.6.11">7.21.6.11</a>, <a href="#7.21.6.12">7.21.6.12</a>,
+ member name space, <a href="#6.2.3">6.2.3</a> <a href="#7.21.6.13">7.21.6.13</a>, <a href="#7.21.6.14">7.21.6.14</a>, <a href="#7.28.2.5">7.28.2.5</a>, <a href="#7.28.2.6">7.28.2.6</a>,
+ member operator (.), <a href="#6.3.2.1">6.3.2.1</a>, <a href="#6.5.2.3">6.5.2.3</a> <a href="#7.28.2.7">7.28.2.7</a>, <a href="#7.28.2.8">7.28.2.8</a>, <a href="#7.28.2.9">7.28.2.9</a>, <a href="#7.28.2.10">7.28.2.10</a>,
+ pointer operator (->), <a href="#6.5.2.3">6.5.2.3</a> <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a>, <a href="#K.3.9.1.7">K.3.9.1.7</a>,
+ specifier, <a href="#6.7.2.1">6.7.2.1</a> <a href="#K.3.9.1.10">K.3.9.1.10</a>, <a href="#K.3.9.1.12">K.3.9.1.12</a>
+ tag, <a href="#6.2.3">6.2.3</a>, <a href="#6.7.2.3">6.7.2.3</a> value, <a href="#3.19">3.19</a>
+ type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.2.1">6.7.2.1</a> value bits, <a href="#6.2.6.2">6.2.6.2</a>
+<!--page 695 indent 0-->
+ variable arguments, <a href="#6.10.3">6.10.3</a>, <a href="#7.16">7.16</a> vswscanf function, <a href="#7.28.2.8">7.28.2.8</a>
+ variable arguments header, <a href="#7.16">7.16</a> vswscanf_s function, <a href="#K.3.9.1.10">K.3.9.1.10</a>
+ variable length array, <a href="#6.7.6">6.7.6</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.10.8.3">6.10.8.3</a> vwprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.9">7.28.2.9</a>, <a href="#K.3.9.1.11">K.3.9.1.11</a>
+ variably modified type, <a href="#6.7.6">6.7.6</a>, <a href="#6.7.6.2">6.7.6.2</a>, <a href="#6.10.8.3">6.10.8.3</a> vwprintf_s function, <a href="#K.3.9.1.11">K.3.9.1.11</a>
+ vertical-tab character, <a href="#5.2.1">5.2.1</a>, <a href="#6.4">6.4</a> vwscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#7.28.3.10">7.28.3.10</a>
+ vertical-tab escape sequence (\v), <a href="#5.2.2">5.2.2</a>, <a href="#6.4.4.4">6.4.4.4</a>, vwscanf_s function, <a href="#K.3.9.1.12">K.3.9.1.12</a>
+ <a href="#7.4.1.10">7.4.1.10</a>
+ vfprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#K.3.5.3.8">K.3.5.3.8</a> warnings, <a href="#I">I</a>
+ vfprintf_s function, <a href="#K.3.5.3.8">K.3.5.3.8</a>, <a href="#K.3.5.3.9">K.3.5.3.9</a>, wchar.h header, <a href="#5.2.4.2.2">5.2.4.2.2</a>, <a href="#7.21.1">7.21.1</a>, <a href="#7.28">7.28</a>, <a href="#7.30.12">7.30.12</a>,
+ <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> <a href="#F">F</a>, <a href="#K.3.9">K.3.9</a>
+ vfscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.9">7.21.6.9</a> WCHAR_MAX macro, <a href="#7.20.3">7.20.3</a>, <a href="#7.28.1">7.28.1</a>
+ vfscanf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, WCHAR_MIN macro, <a href="#7.20.3">7.20.3</a>, <a href="#7.28.1">7.28.1</a>
+ <a href="#K.3.5.3.14">K.3.5.3.14</a> wchar_t type, <a href="#3.7.3">3.7.3</a>, <a href="#6.4.5">6.4.5</a>, <a href="#6.7.9">6.7.9</a>, <a href="#6.10.8.2">6.10.8.2</a>, <a href="#7.19">7.19</a>,
+ vfwprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.5">7.28.2.5</a>, <a href="#K.3.9.1.6">K.3.9.1.6</a> <a href="#7.20.3">7.20.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.22">7.22</a>, <a href="#7.28.1">7.28.1</a>,
+ vfwprintf_s function, <a href="#K.3.9.1.6">K.3.9.1.6</a> <a href="#7.28.2.1">7.28.2.1</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ vfwscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.6">7.28.2.6</a>, <a href="#7.28.3.10">7.28.3.10</a> wcrtomb function, <a href="#7.21.3">7.21.3</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>,
+ vfwscanf_s function, <a href="#K.3.9.1.7">K.3.9.1.7</a> <a href="#7.28.6.3.3">7.28.6.3.3</a>, <a href="#7.28.6.4.2">7.28.6.4.2</a>, <a href="#K.3.6.5.2">K.3.6.5.2</a>, <a href="#K.3.9.3.1">K.3.9.3.1</a>,
+ visibility of identifier, <a href="#6.2.1">6.2.1</a> <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a>
+ visible sequence of side effects, <a href="#5.1.2.4">5.1.2.4</a> wcrtomb_s function, <a href="#K.3.9.3.1">K.3.9.3.1</a>, <a href="#K.3.9.3.1.1">K.3.9.3.1.1</a>
+ visible side effect, <a href="#5.1.2.4">5.1.2.4</a> wcscat function, <a href="#7.28.4.3.1">7.28.4.3.1</a>
+ VLA, see variable length array wcscat_s function, <a href="#K.3.9.2.2.1">K.3.9.2.2.1</a>
+ void expression, <a href="#6.3.2.2">6.3.2.2</a> wcschr function, <a href="#7.28.4.5.1">7.28.4.5.1</a>
+ void function parameter, <a href="#6.7.6.3">6.7.6.3</a> wcscmp function, <a href="#7.28.4.4.1">7.28.4.4.1</a>, <a href="#7.28.4.4.4">7.28.4.4.4</a>
+ void type, <a href="#6.2.5">6.2.5</a>, <a href="#6.3.2.2">6.3.2.2</a>, <a href="#6.7.2">6.7.2</a>, <a href="#K.3.5.3.2">K.3.5.3.2</a>, wcscoll function, <a href="#7.28.4.4.2">7.28.4.4.2</a>, <a href="#7.28.4.4.4">7.28.4.4.4</a>
+ <a href="#K.3.9.1.2">K.3.9.1.2</a> wcscpy function, <a href="#7.28.4.2.1">7.28.4.2.1</a>
+ void type conversion, <a href="#6.3.2.2">6.3.2.2</a> wcscpy_s function, <a href="#K.3.9.2.1.1">K.3.9.2.1.1</a>
+ volatile storage, <a href="#5.1.2.3">5.1.2.3</a> wcscspn function, <a href="#7.28.4.5.2">7.28.4.5.2</a>
+ volatile type qualifier, <a href="#6.7.3">6.7.3</a> wcsftime function, <a href="#7.11.1.1">7.11.1.1</a>, <a href="#7.28.5.1">7.28.5.1</a>
+ volatile-qualified type, <a href="#6.2.5">6.2.5</a>, <a href="#6.7.3">6.7.3</a> wcslen function, <a href="#7.28.4.6.1">7.28.4.6.1</a>
+ vprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.10">7.21.6.10</a>, wcsncat function, <a href="#7.28.4.3.2">7.28.4.3.2</a>
+ <a href="#K.3.5.3.10">K.3.5.3.10</a> wcsncat_s function, <a href="#K.3.9.2.2.2">K.3.9.2.2.2</a>
+ vprintf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.10">K.3.5.3.10</a>, wcsncmp function, <a href="#7.28.4.4.3">7.28.4.4.3</a>
+ <a href="#K.3.5.3.11">K.3.5.3.11</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> wcsncpy function, <a href="#7.28.4.2.2">7.28.4.2.2</a>
+ vscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.11">7.21.6.11</a> wcsncpy_s function, <a href="#K.3.9.2.1.2">K.3.9.2.1.2</a>
+ vscanf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, wcsnlen_s function, <a href="#K.3.9.2.4.1">K.3.9.2.4.1</a>
+ <a href="#K.3.5.3.14">K.3.5.3.14</a> wcspbrk function, <a href="#7.28.4.5.3">7.28.4.5.3</a>
+ vsnprintf function, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.12">7.21.6.12</a>, wcsrchr function, <a href="#7.28.4.5.4">7.28.4.5.4</a>
+ <a href="#K.3.5.3.12">K.3.5.3.12</a> wcsrtombs function, <a href="#7.28.6.4.2">7.28.6.4.2</a>, <a href="#K.3.9.3.2">K.3.9.3.2</a>
+ vsnprintf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, wcsrtombs_s function, <a href="#K.3.9.3.2">K.3.9.3.2</a>, <a href="#K.3.9.3.2.2">K.3.9.3.2.2</a>
+ <a href="#K.3.5.3.12">K.3.5.3.12</a>, <a href="#K.3.5.3.13">K.3.5.3.13</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> wcsspn function, <a href="#7.28.4.5.5">7.28.4.5.5</a>
+ vsnwprintf_s function, <a href="#K.3.9.1.8">K.3.9.1.8</a>, <a href="#K.3.9.1.9">K.3.9.1.9</a> wcsstr function, <a href="#7.28.4.5.6">7.28.4.5.6</a>
+ vsprintf function, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.13">7.21.6.13</a>, wcstod function, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>
+ <a href="#K.3.5.3.13">K.3.5.3.13</a> wcstod function, <a href="#7.28.4.1.1">7.28.4.1.1</a>
+ vsprintf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, wcstof function, <a href="#7.28.4.1.1">7.28.4.1.1</a>
+ <a href="#K.3.5.3.12">K.3.5.3.12</a>, <a href="#K.3.5.3.13">K.3.5.3.13</a>, <a href="#K.3.5.3.14">K.3.5.3.14</a> wcstoimax function, <a href="#7.8.2.4">7.8.2.4</a>
+ vsscanf function, <a href="#7.21.6.8">7.21.6.8</a>, <a href="#7.21.6.14">7.21.6.14</a> wcstok function, <a href="#7.28.4.5.7">7.28.4.5.7</a>
+ vsscanf_s function, <a href="#K.3.5.3.9">K.3.5.3.9</a>, <a href="#K.3.5.3.11">K.3.5.3.11</a>, wcstok_s function, <a href="#K.3.9.2.3.1">K.3.9.2.3.1</a>
+ <a href="#K.3.5.3.14">K.3.5.3.14</a> wcstol function, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>,
+ vswprintf function, <a href="#7.28.2.7">7.28.2.7</a>, <a href="#K.3.9.1.8">K.3.9.1.8</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>
+ <a href="#K.3.9.1.9">K.3.9.1.9</a> wcstold function, <a href="#7.28.4.1.1">7.28.4.1.1</a>
+ vswprintf_s function, <a href="#K.3.9.1.8">K.3.9.1.8</a>, <a href="#K.3.9.1.9">K.3.9.1.9</a> wcstoll function, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a>
+<!--page 696 indent 0-->
+ wcstombs function, <a href="#7.22.8.2">7.22.8.2</a>, <a href="#7.28.6.4">7.28.6.4</a> <a href="#7.29.1">7.29.1</a>
+ wcstombs_s function, <a href="#K.3.6.5.2">K.3.6.5.2</a> wmemchr function, <a href="#7.28.4.5.8">7.28.4.5.8</a>
+ wcstoul function, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.21.6.2">7.21.6.2</a>, <a href="#7.28.2.2">7.28.2.2</a>, wmemcmp function, <a href="#7.28.4.4.5">7.28.4.4.5</a>
+ <a href="#7.28.4.1.2">7.28.4.1.2</a> wmemcpy function, <a href="#7.28.4.2.3">7.28.4.2.3</a>
+ wcstoull function, <a href="#7.8.2.4">7.8.2.4</a>, <a href="#7.28.4.1.2">7.28.4.1.2</a> wmemcpy_s function, <a href="#K.3.9.2.1.3">K.3.9.2.1.3</a>
+ wcstoumax function, <a href="#7.8.2.4">7.8.2.4</a> wmemmove function, <a href="#7.28.4.2.4">7.28.4.2.4</a>
+ wcsxfrm function, <a href="#7.28.4.4.4">7.28.4.4.4</a> wmemmove_s function, <a href="#K.3.9.2.1.4">K.3.9.2.1.4</a>
+ wctob function, <a href="#7.28.6.1.2">7.28.6.1.2</a>, <a href="#7.29.2.1">7.29.2.1</a> wmemset function, <a href="#7.28.4.6.2">7.28.4.6.2</a>
+ wctomb function, <a href="#7.22.7.3">7.22.7.3</a>, <a href="#7.22.8.2">7.22.8.2</a>, <a href="#7.28.6.3">7.28.6.3</a> wprintf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.9">7.28.2.9</a>, <a href="#7.28.2.11">7.28.2.11</a>,
+ wctomb_s function, <a href="#K.3.6.4.1">K.3.6.4.1</a> <a href="#K.3.9.1.13">K.3.9.1.13</a>
+ wctrans function, <a href="#7.29.3.2.1">7.29.3.2.1</a>, <a href="#7.29.3.2.2">7.29.3.2.2</a> wprintf_s function, <a href="#K.3.9.1.13">K.3.9.1.13</a>
+ wctrans_t type, <a href="#7.29.1">7.29.1</a>, <a href="#7.29.3.2.2">7.29.3.2.2</a> wscanf function, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.2.10">7.28.2.10</a>, <a href="#7.28.2.12">7.28.2.12</a>,
+ wctype function, <a href="#7.29.2.2.1">7.29.2.2.1</a>, <a href="#7.29.2.2.2">7.29.2.2.2</a> <a href="#7.28.3.10">7.28.3.10</a>
+ wctype.h header, <a href="#7.29">7.29</a>, <a href="#7.30.13">7.30.13</a> wscanf_s function, <a href="#K.3.9.1.12">K.3.9.1.12</a>, <a href="#K.3.9.1.14">K.3.9.1.14</a>
+ wctype_t type, <a href="#7.29.1">7.29.1</a>, <a href="#7.29.2.2.2">7.29.2.2.2</a>
+ weaker, <a href="#6.2.8">6.2.8</a> xor macro, <a href="#7.9">7.9</a>
+ WEOF macro, <a href="#7.28.1">7.28.1</a>, <a href="#7.28.3.1">7.28.3.1</a>, <a href="#7.28.3.3">7.28.3.3</a>, <a href="#7.28.3.6">7.28.3.6</a>, xor_eq macro, <a href="#7.9">7.9</a>
+ <a href="#7.28.3.7">7.28.3.7</a>, <a href="#7.28.3.8">7.28.3.8</a>, <a href="#7.28.3.9">7.28.3.9</a>, <a href="#7.28.3.10">7.28.3.10</a>, xtime type, <a href="#7.25.1">7.25.1</a>, <a href="#7.25.3.5">7.25.3.5</a>, <a href="#7.25.4.4">7.25.4.4</a>, <a href="#7.25.5.7">7.25.5.7</a>,
+ <a href="#7.28.6.1.1">7.28.6.1.1</a>, <a href="#7.29.1">7.29.1</a> <a href="#7.25.7.1">7.25.7.1</a>
+ while statement, <a href="#6.8.5.1">6.8.5.1</a> xtime_get function, <a href="#7.25.7.1">7.25.7.1</a>
+ white space, <a href="#5.1.1.2">5.1.1.2</a>, <a href="#6.4">6.4</a>, <a href="#6.10">6.10</a>, <a href="#7.4.1.10">7.4.1.10</a>,
+ <a href="#7.29.2.1.10">7.29.2.1.10</a>
+ white-space characters, <a href="#6.4">6.4</a>
+ wide character, <a href="#3.7.3">3.7.3</a>
+ case mapping functions, <a href="#7.29.3.1">7.29.3.1</a>
+ extensible, <a href="#7.29.3.2">7.29.3.2</a>
+ classification functions, <a href="#7.29.2.1">7.29.2.1</a>
+ extensible, <a href="#7.29.2.2">7.29.2.2</a>
+ constant, <a href="#6.4.4.4">6.4.4.4</a>
+ formatted input/output functions, <a href="#7.28.2">7.28.2</a>,
+ <a href="#K.3.9.1">K.3.9.1</a>
+ input functions, <a href="#7.21.1">7.21.1</a>
+ input/output functions, <a href="#7.21.1">7.21.1</a>, <a href="#7.28.3">7.28.3</a>
+ output functions, <a href="#7.21.1">7.21.1</a>
+ single-byte conversion functions, <a href="#7.28.6.1">7.28.6.1</a>
+ wide string, <a href="#7.1.1">7.1.1</a>
+ wide string comparison functions, <a href="#7.28.4.4">7.28.4.4</a>
+ wide string concatenation functions, <a href="#7.28.4.3">7.28.4.3</a>,
+ <a href="#K.3.9.2.2">K.3.9.2.2</a>
+ wide string copying functions, <a href="#7.28.4.2">7.28.4.2</a>, <a href="#K.3.9.2.1">K.3.9.2.1</a>
+ wide string literal, see string literal
+ wide string miscellaneous functions, <a href="#7.28.4.6">7.28.4.6</a>,
+ <a href="#K.3.9.2.4">K.3.9.2.4</a>
+ wide string numeric conversion functions, <a href="#7.8.2.4">7.8.2.4</a>,
+ <a href="#7.28.4.1">7.28.4.1</a>
+ wide string search functions, <a href="#7.28.4.5">7.28.4.5</a>, <a href="#K.3.9.2.3">K.3.9.2.3</a>
+ wide-oriented stream, <a href="#7.21.2">7.21.2</a>
+ width, <a href="#6.2.6.2">6.2.6.2</a>
+ WINT_MAX macro, <a href="#7.20.3">7.20.3</a>
+ WINT_MIN macro, <a href="#7.20.3">7.20.3</a>
+ wint_t type, <a href="#7.20.3">7.20.3</a>, <a href="#7.21.6.1">7.21.6.1</a>, <a href="#7.28.1">7.28.1</a>, <a href="#7.28.2.1">7.28.2.1</a>,
+</pre>
+</body></html>