tabulation position, the behavior of the display device is unspecified.</pre>
\v (vertical tab) Moves the active position to the initial position of the next vertical
<!--page 43 -->
tabulation position, the behavior of the display device is unspecified.</pre>
\v (vertical tab) Moves the active position to the initial position of the next vertical
<!--page 43 -->
<pre>
tabulation position. If the active position is at or past the last defined vertical
tabulation position, the behavior of the display device is unspecified.</pre>
<pre>
tabulation position. If the active position is at or past the last defined vertical
tabulation position, the behavior of the display device is unspecified.</pre>
Each of these escape sequences shall produce a unique implementation-defined value
which can be stored in a single char object. The external representations in a text file
need not be identical to the internal representations, and are outside the scope of this
Each of these escape sequences shall produce a unique implementation-defined value
which can be stored in a single char object. The external representations in a text file
need not be identical to the internal representations, and are outside the scope of this
representation of floating-point numbers and values that provide information about an
implementation's floating-point arithmetic.<sup><a href="#note21"><b>21)</b></a></sup> The following parameters are used to
define the model for each floating-point type:
representation of floating-point numbers and values that provide information about an
implementation's floating-point arithmetic.<sup><a href="#note21"><b>21)</b></a></sup> The following parameters are used to
define the model for each floating-point type:
<pre>
s sign ((+-)1)
b base or radix of exponent representation (an integer > 1)
e exponent (an integer between a minimum emin and a maximum emax )
p precision (the number of base-b digits in the significand)
fk nonnegative integers less than b (the significand digits)</pre>
<pre>
s sign ((+-)1)
b base or radix of exponent representation (an integer > 1)
e exponent (an integer between a minimum emin and a maximum emax )
p precision (the number of base-b digits in the significand)
fk nonnegative integers less than b (the significand digits)</pre>
The presence or absence of subnormal numbers is characterized by the implementation-
defined values of FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, and
LDBL_HAS_SUBNORM:
The presence or absence of subnormal numbers is characterized by the implementation-
defined values of FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, and
LDBL_HAS_SUBNORM:
<pre>
-1 indeterminable<sup><a href="#note25"><b>25)</b></a></sup>
0 absent<sup><a href="#note26"><b>26)</b></a></sup> (type does not support subnormal numbers)
1 present (type does support subnormal numbers)</pre>
<pre>
-1 indeterminable<sup><a href="#note25"><b>25)</b></a></sup>
0 absent<sup><a href="#note26"><b>26)</b></a></sup> (type does not support subnormal numbers)
1 present (type does support subnormal numbers)</pre>
The values given in the following list shall be replaced by constant expressions with
implementation-defined values that are greater or equal in magnitude (absolute value) to
those shown, with the same sign:
The values given in the following list shall be replaced by constant expressions with
implementation-defined values that are greater or equal in magnitude (absolute value) to
those shown, with the same sign:
LDBL_MAX_EXP</pre>
<li> maximum integer such that 10 raised to that power is in the range of representable
finite floating-point numbers, [_log10 ((1 - b- p )b emax )_]
LDBL_MAX_EXP</pre>
<li> maximum integer such that 10 raised to that power is in the range of representable
finite floating-point numbers, [_log10 ((1 - b- p )b emax )_]
The values given in the following list shall be replaced by constant expressions with
implementation-defined values that are greater than or equal to those shown:
<ul>
<li> maximum representable finite floating-point number, (1 - b- p )b emax
The values given in the following list shall be replaced by constant expressions with
implementation-defined values that are greater than or equal to those shown:
<ul>
<li> maximum representable finite floating-point number, (1 - b- p )b emax
The values given in the following list shall be replaced by constant expressions with
implementation-defined (positive) values that are less than or equal to those shown:
<ul>
The values given in the following list shall be replaced by constant expressions with
implementation-defined (positive) values that are less than or equal to those shown:
<ul>
the result, whose type domain is the type domain of the operands if they are the same,
and complex otherwise. This pattern is called the usual arithmetic conversions:
<!--page 71 -->
the result, whose type domain is the type domain of the operands if they are the same,
and complex otherwise. This pattern is called the usual arithmetic conversions:
<!--page 71 -->
<pre>
First, if the corresponding real type of either operand is long double, the other
operand is converted, without change of type domain, to a type whose
<pre>
First, if the corresponding real type of either operand is long double, the other
operand is converted, without change of type domain, to a type whose
operand with signed integer type.
Otherwise, both operands are converted to the unsigned integer type
corresponding to the type of the operand with signed integer type.</pre>
operand with signed integer type.
Otherwise, both operands are converted to the unsigned integer type
corresponding to the type of the operand with signed integer type.</pre>
The values of floating operands and of the results of floating expressions may be
represented in greater precision and range than that required by the type; the types are not
changed thereby.<sup><a href="#note63"><b>63)</b></a></sup>
The values of floating operands and of the results of floating expressions may be
represented in greater precision and range than that required by the type; the types are not
changed thereby.<sup><a href="#note63"><b>63)</b></a></sup>
The single-quote ', the double-quote ", the question-mark ?, the backslash \, and
arbitrary integer values are representable according to the following table of escape
sequences:
The single-quote ', the double-quote ", the question-mark ?, the backslash \, and
arbitrary integer values are representable according to the following table of escape
sequences:
The double-quote " and question-mark ? are representable either by themselves or by the
escape sequences \" and \?, respectively, but the single-quote ' and the backslash \
shall be represented, respectively, by the escape sequences \' and \\.
The double-quote " and question-mark ? are representable either by themselves or by the
escape sequences \" and \?, respectively, but the single-quote ' and the backslash \
shall be represented, respectively, by the escape sequences \' and \\.
expression (Q)+1 does not point to an element of the array object.<sup><a href="#note106"><b>106)</b></a></sup>
<p><!--para 10 -->
EXAMPLE Pointer arithmetic is well defined with pointers to variable length array types.
expression (Q)+1 does not point to an element of the array object.<sup><a href="#note106"><b>106)</b></a></sup>
<p><!--para 10 -->
EXAMPLE Pointer arithmetic is well defined with pointers to variable length array types.
If array a in the above example were declared to be an array of known constant size, and pointer p were
declared to be a pointer to an array of the same known constant size (pointing to a), the results would be
the same.
If array a in the above example were declared to be an array of known constant size, and pointer p were
declared to be a pointer to an array of the same known constant size (pointing to a), the results would be
the same.
s2 = malloc(sizeof (struct s) + 46);</pre>
and assuming that the calls to malloc succeed, the objects pointed to by s1 and s2 behave, for most
purposes, as if the identifiers had been declared as:
s2 = malloc(sizeof (struct s) + 46);</pre>
and assuming that the calls to malloc succeed, the objects pointed to by s1 and s2 behave, for most
purposes, as if the identifiers had been declared as:
<pre>
double *dp;
dp = &(s1->d[0]); // valid
*dp = 42; // valid
dp = &(s2->d[0]); // valid
*dp = 42; // undefined behavior</pre>
<pre>
double *dp;
dp = &(s1->d[0]); // valid
*dp = 42; // valid
dp = &(s2->d[0]); // valid
*dp = 42; // undefined behavior</pre>
function call and an equivalent nested block. With one exception, only ''outer-to-inner'' assignments
between restricted pointers declared in nested blocks have defined behavior.
<!--page 142 -->
function call and an equivalent nested block. With one exception, only ''outer-to-inner'' assignments
between restricted pointers declared in nested blocks have defined behavior.
<!--page 142 -->
The one exception allows the value of a restricted pointer to be carried out of the block in which it (or, more
precisely, the ordinary identifier used to designate it) is declared when that block finishes execution. For
example, this permits new_vector to return a vector.
The one exception allows the value of a restricted pointer to be carried out of the block in which it (or, more
precisely, the ordinary identifier used to designate it) is declared when that block finishes execution. For
example, this permits new_vector to return a vector.
EXAMPLE 1 The declaration of an inline function with external linkage can result in either an external
definition, or a definition available for use only within the translation unit. A file scope declaration with
extern creates an external definition. The following example shows an entire translation unit.
EXAMPLE 1 The declaration of an inline function with external linkage can result in either an external
definition, or a definition available for use only within the translation unit. A file scope declaration with
extern creates an external definition. The following example shows an entire translation unit.
Note that the definition of fahr is an external definition because fahr is also declared with extern, but
the definition of cels is an inline definition. Because cels has external linkage and is referenced, an
external definition has to appear in another translation unit (see <a href="#6.9">6.9</a>); the inline definition and the external
Note that the definition of fahr is an external definition because fahr is also declared with extern, but
the definition of cels is an inline definition. Because cels has external linkage and is referenced, an
external definition has to appear in another translation unit (see <a href="#6.9">6.9</a>); the inline definition and the external
<pre>
int a[MAX] = {
1, 3, 5, 7, 9, [MAX-5] = 8, 6, 4, 2, 0
};</pre>
<pre>
int a[MAX] = {
1, 3, 5, 7, 9, [MAX-5] = 8, 6, 4, 2, 0
};</pre>
In the above, if MAX is greater than ten, there will be some zero-valued elements in the middle; if it is less
than ten, some of the values provided by the first five initializers will be overridden by the second five.
In the above, if MAX is greater than ten, there will be some zero-valued elements in the middle; if it is less
than ten, some of the values provided by the first five initializers will be overridden by the second five.
<li> The code to determine the next operation is at the head of the loop. (To allow it to be reached by
continue statements, for example.)
<!--page 170 -->
<li> The code to determine the next operation is at the head of the loop. (To allow it to be reached by
continue statements, for example.)
<!--page 170 -->
EXAMPLE 2 A goto statement is not allowed to jump past any declarations of objects with variably
modified types. A jump within the scope, however, is permitted.
<pre>
EXAMPLE 2 A goto statement is not allowed to jump past any declarations of objects with variably
modified types. A jump within the scope, however, is permitted.
<pre>
type qualifier and the <a href="#7.17"><stdatomic.h></a> header) or the <a href="#7.25"><threads.h></a>
header.</pre>
__STDC_NO_VLA__ The integer constant 1, intended to indicate that the
type qualifier and the <a href="#7.17"><stdatomic.h></a> header) or the <a href="#7.25"><threads.h></a>
header.</pre>
__STDC_NO_VLA__ The integer constant 1, intended to indicate that the
include type qualifiers, unless explicitly stated otherwise.
<p><!--para 2 -->
The standard headers are<sup><a href="#note183"><b>183)</b></a></sup>
include type qualifiers, unless explicitly stated otherwise.
<p><!--para 2 -->
The standard headers are<sup><a href="#note183"><b>183)</b></a></sup>
<pre>
<a href="#7.2"><assert.h></a> <a href="#7.9"><iso646.h></a> <a href="#7.16"><stdarg.h></a> <a href="#7.23"><string.h></a>
<a href="#7.3"><complex.h></a> <a href="#7.10"><limits.h></a> <a href="#7.17"><stdatomic.h></a> <a href="#7.24"><tgmath.h></a>
<pre>
<a href="#7.2"><assert.h></a> <a href="#7.9"><iso646.h></a> <a href="#7.16"><stdarg.h></a> <a href="#7.23"><string.h></a>
<a href="#7.3"><complex.h></a> <a href="#7.10"><limits.h></a> <a href="#7.17"><stdatomic.h></a> <a href="#7.24"><tgmath.h></a>
<a href="#7.6"><fenv.h></a> <a href="#7.13"><setjmp.h></a> <a href="#7.20"><stdint.h></a> <a href="#7.27"><uchar.h></a>
<a href="#7.7"><float.h></a> <a href="#7.14"><signal.h></a> <a href="#7.21"><stdio.h></a> <a href="#7.28"><wchar.h></a>
<a href="#7.8"><inttypes.h></a> <a href="#7.15"><stdalign.h></a> <a href="#7.22"><stdlib.h></a> <a href="#7.29"><wctype.h></a></pre>
<a href="#7.6"><fenv.h></a> <a href="#7.13"><setjmp.h></a> <a href="#7.20"><stdint.h></a> <a href="#7.27"><uchar.h></a>
<a href="#7.7"><float.h></a> <a href="#7.14"><signal.h></a> <a href="#7.21"><stdio.h></a> <a href="#7.28"><wchar.h></a>
<a href="#7.8"><inttypes.h></a> <a href="#7.15"><stdalign.h></a> <a href="#7.22"><stdlib.h></a> <a href="#7.29"><wctype.h></a></pre>
If a file with the same name as one of the above < and > delimited sequences, not
provided as part of the implementation, is placed in any of the standard places that are
searched for included source files, the behavior is undefined.
If a file with the same name as one of the above < and > delimited sequences, not
provided as part of the implementation, is placed in any of the standard places that are
searched for included source files, the behavior is undefined.
If the function g might depend on status flags set as a side effect of the first x + 1, or if the second
x + 1 might depend on control modes set as a side effect of the call to function g, then the program shall
contain an appropriately placed invocation of #pragma STDC FENV_ACCESS ON.<sup><a href="#note211"><b>211)</b></a></sup>
If the function g might depend on status flags set as a side effect of the first x + 1, or if the second
x + 1 might depend on control modes set as a side effect of the call to function g, then the program shall
contain an appropriately placed invocation of #pragma STDC FENV_ACCESS ON.<sup><a href="#note211"><b>211)</b></a></sup>
format string to print the value of an integer of type int_fast32_t.
<p><!--para 2 -->
The fprintf macros for signed integers are:
format string to print the value of an integer of type int_fast32_t.
<p><!--para 2 -->
The fprintf macros for signed integers are:
<pre>
PRIoN PRIoLEASTN PRIoFASTN PRIoMAX PRIoPTR
PRIuN PRIuLEASTN PRIuFASTN PRIuMAX PRIuPTR
PRIxN PRIxLEASTN PRIxFASTN PRIxMAX PRIxPTR
PRIXN PRIXLEASTN PRIXFASTN PRIXMAX PRIXPTR</pre>
<pre>
PRIoN PRIoLEASTN PRIoFASTN PRIoMAX PRIoPTR
PRIuN PRIuLEASTN PRIuFASTN PRIuMAX PRIuPTR
PRIxN PRIxLEASTN PRIxFASTN PRIxMAX PRIxPTR
PRIXN PRIXLEASTN PRIXFASTN PRIXMAX PRIXPTR</pre>
<pre>
SCNoN SCNoLEASTN SCNoFASTN SCNoMAX SCNoPTR
SCNuN SCNuLEASTN SCNuFASTN SCNuMAX SCNuPTR
SCNxN SCNxLEASTN SCNxFASTN SCNxMAX SCNxPTR</pre>
<pre>
SCNoN SCNoLEASTN SCNoFASTN SCNoMAX SCNoPTR
SCNuN SCNuLEASTN SCNuFASTN SCNuMAX SCNuPTR
SCNxN SCNxLEASTN SCNxFASTN SCNxMAX SCNxPTR</pre>
For each type that the implementation provides in <a href="#7.20"><stdint.h></a>, the corresponding
fprintf macros shall be defined and the corresponding fscanf macros shall be
defined unless the implementation does not have a suitable fscanf length modifier for
For each type that the implementation provides in <a href="#7.20"><stdint.h></a>, the corresponding
fprintf macros shall be defined and the corresponding fscanf macros shall be
defined unless the implementation does not have a suitable fscanf length modifier for
their normal ranges are explained in <a href="#7.11.2.1">7.11.2.1</a>. In the "C" locale, the members shall have
the values specified in the comments.
<!--page 241 -->
their normal ranges are explained in <a href="#7.11.2.1">7.11.2.1</a>. In the "C" locale, the members shall have
the values specified in the comments.
<!--page 241 -->
char int_n_sep_by_space; // CHAR_MAX
char int_p_sign_posn; // CHAR_MAX
char int_n_sign_posn; // CHAR_MAX</pre>
char int_n_sep_by_space; // CHAR_MAX
char int_p_sign_posn; // CHAR_MAX
char int_n_sign_posn; // CHAR_MAX</pre>
Set to a value indicating the positioning of the positive_sign for a
nonnegative internationally formatted monetary quantity.</pre>
char int_n_sign_posn
Set to a value indicating the positioning of the positive_sign for a
nonnegative internationally formatted monetary quantity.</pre>
char int_n_sign_posn
<pre>
Set to a value indicating the positioning of the negative_sign for a
negative internationally formatted monetary quantity.</pre>
<pre>
Set to a value indicating the positioning of the negative_sign for a
negative internationally formatted monetary quantity.</pre>
The elements of grouping and mon_grouping are interpreted according to the
following:
CHAR_MAX No further grouping is to be performed.
The elements of grouping and mon_grouping are interpreted according to the
following:
CHAR_MAX No further grouping is to be performed.
<pre>
The next element is examined to determine the size of the next group of
digits before the current group.</pre>
<pre>
The next element is examined to determine the size of the next group of
digits before the current group.</pre>
The values of p_sep_by_space, n_sep_by_space, int_p_sep_by_space,
and int_n_sep_by_space are interpreted according to the following:
0 No space separates the currency symbol and value.
The values of p_sep_by_space, n_sep_by_space, int_p_sep_by_space,
and int_n_sep_by_space are interpreted according to the following:
0 No space separates the currency symbol and value.
compare unequal to the address of any declarable function; and the following, which
expand to positive integer constant expressions with type int and distinct values that are
the signal numbers, each corresponding to the specified condition:
compare unequal to the address of any declarable function; and the following, which
expand to positive integer constant expressions with type int and distinct values that are
the signal numbers, each corresponding to the specified condition:
<pre>
SIGABRT abnormal termination, such as is initiated by the abort function
SIGFPE an erroneous arithmetic operation, such as zero divide or an operation
<pre>
SIGABRT abnormal termination, such as is initiated by the abort function
SIGFPE an erroneous arithmetic operation, such as zero divide or an operation
SIGINT receipt of an interactive attention signal
SIGSEGV an invalid access to storage
SIGTERM a termination request sent to the program</pre>
SIGINT receipt of an interactive attention signal
SIGSEGV an invalid access to storage
SIGTERM a termination request sent to the program</pre>
An implementation need not generate any of these signals, except as a result of explicit
calls to the raise function. Additional signals and pointers to undeclarable functions,
with macro definitions beginning, respectively, with the letters SIG and an uppercase
An implementation need not generate any of these signals, except as a result of explicit
calls to the raise function. Additional signals and pointers to undeclarable functions,
with macro definitions beginning, respectively, with the letters SIG and an uppercase
The enumerated type memory_order specifies the detailed regular (non-atomic)
memory synchronization operations as defined in <a href="#5.1.2.4">5.1.2.4</a> and may provide for operation
ordering. Its enumeration constants are as follows:
The enumerated type memory_order specifies the detailed regular (non-atomic)
memory synchronization operations as defined in <a href="#5.1.2.4">5.1.2.4</a> and may provide for operation
ordering. Its enumeration constants are as follows:
For memory_order_relaxed, no operation orders memory.
<p><!--para 3 -->
For memory_order_release, memory_order_acq_rel, and
For memory_order_relaxed, no operation orders memory.
<p><!--para 3 -->
For memory_order_release, memory_order_acq_rel, and
For each line in the following table, the atomic type name is declared as the
corresponding direct type.
<!--page 298 -->
For each line in the following table, the atomic type name is declared as the
corresponding direct type.
<!--page 298 -->
atomic_ptrdiff_t _Atomic ptrdiff_t
atomic_intmax_t _Atomic intmax_t
atomic_uintmax_t _Atomic uintmax_t</pre>
atomic_ptrdiff_t _Atomic ptrdiff_t
atomic_intmax_t _Atomic intmax_t
atomic_uintmax_t _Atomic uintmax_t</pre>
The semantics of the operations on these types are defined in <a href="#7.17.7">7.17.7</a>.
<p><!--para 3 -->
The atomic_bool type provides an atomic boolean.
The semantics of the operations on these types are defined in <a href="#7.17.7">7.17.7</a>.
<p><!--para 3 -->
The atomic_bool type provides an atomic boolean.
<pre>
conversions, if a precision is specified, the 0 flag is ignored. For other
conversions, the behavior is undefined.</pre>
<pre>
conversions, if a precision is specified, the 0 flag is ignored. For other
conversions, the behavior is undefined.</pre>
The length modifiers and their meanings are:
hh Specifies that a following d, i, o, u, x, or X conversion specifier applies to a
<pre>
The length modifiers and their meanings are:
hh Specifies that a following d, i, o, u, x, or X conversion specifier applies to a
<pre>
specification includes any flags, a field width, or a precision, the behavior is
undefined.</pre>
% A % character is written. No argument is converted. The complete
specification includes any flags, a field width, or a precision, the behavior is
undefined.</pre>
% A % character is written. No argument is converted. The complete
If a conversion specification is invalid, the behavior is undefined.<sup><a href="#note275"><b>275)</b></a></sup> If any argument is
not the correct type for the corresponding conversion specification, the behavior is
undefined.
If a conversion specification is invalid, the behavior is undefined.<sup><a href="#note275"><b>275)</b></a></sup> If any argument is
not the correct type for the corresponding conversion specification, the behavior is
undefined.
but one is consumed. If the conversion specification includes an assignment-
suppressing character or a field width, the behavior is undefined.</pre>
% Matches a single % character; no conversion or assignment occurs. The
but one is consumed. If the conversion specification includes an assignment-
suppressing character or a field width, the behavior is undefined.</pre>
% Matches a single % character; no conversion or assignment occurs. The
If a conversion specification is invalid, the behavior is undefined.<sup><a href="#note280"><b>280)</b></a></sup>
<p><!--para 14 -->
The conversion specifiers A, E, F, G, and X are also valid and behave the same as,
If a conversion specification is invalid, the behavior is undefined.<sup><a href="#note280"><b>280)</b></a></sup>
<p><!--para 14 -->
The conversion specifiers A, E, F, G, and X are also valid and behave the same as,
count = fscanf(stdin, "%f%20s of %20s", &quant, units, item);
fscanf(stdin,"%*[^\n]");
} while (!feof(stdin) && !ferror(stdin));</pre>
count = fscanf(stdin, "%f%20s of %20s", &quant, units, item);
fscanf(stdin,"%*[^\n]");
} while (!feof(stdin) && !ferror(stdin));</pre>
<pre>
mbtowc((wchar_t *)0, (const char *)0, 0);
mbtowc((wchar_t *)0, s, n);</pre>
<pre>
mbtowc((wchar_t *)0, (const char *)0, 0);
mbtowc((wchar_t *)0, s, n);</pre>
xtime</pre>
which is a structure type that holds a time specified in seconds and nanoseconds. The
structure shall contain at least the following members, in any order.
xtime</pre>
which is a structure type that holds a time specified in seconds and nanoseconds. The
structure shall contain at least the following members, in any order.
%g, %G, and %V give values according to the ISO 8601 week-based year. In this system,
weeks begin on a Monday and week 1 of the year is the week that includes January 4th,
which is also the week that includes the first Thursday of the year, and is also the first
%g, %G, and %V give values according to the ISO 8601 week-based year. In this system,
weeks begin on a Monday and week 1 of the year is the week that includes January 4th,
which is also the week that includes the first Thursday of the year, and is also the first
digit follows it.) For g and G conversions, trailing zeros are not removed from the
result. For other conversions, the behavior is undefined.</pre>
0 For d, i, o, u, x, X, a, A, e, E, f, F, g, and G conversions, leading zeros
digit follows it.) For g and G conversions, trailing zeros are not removed from the
result. For other conversions, the behavior is undefined.</pre>
0 For d, i, o, u, x, X, a, A, e, E, f, F, g, and G conversions, leading zeros
<pre>
(following any indication of sign or base) are used to pad to the field width rather
than performing space padding, except when converting an infinity or NaN. If the
0 and - flags both appear, the 0 flag is ignored. For d, i, o, u, x, and X
conversions, if a precision is specified, the 0 flag is ignored. For other
conversions, the behavior is undefined.</pre>
<pre>
(following any indication of sign or base) are used to pad to the field width rather
than performing space padding, except when converting an infinity or NaN. If the
0 and - flags both appear, the 0 flag is ignored. For d, i, o, u, x, and X
conversions, if a precision is specified, the 0 flag is ignored. For other
conversions, the behavior is undefined.</pre>
The length modifiers and their meanings are:
hh Specifies that a following d, i, o, u, x, or X conversion specifier applies to a
<pre>
The length modifiers and their meanings are:
hh Specifies that a following d, i, o, u, x, or X conversion specifier applies to a
<pre>
conversion specification includes any flags, a field width, or a precision, the
behavior is undefined.</pre>
% A % wide character is written. No argument is converted. The complete
conversion specification includes any flags, a field width, or a precision, the
behavior is undefined.</pre>
% A % wide character is written. No argument is converted. The complete
If a conversion specification is invalid, the behavior is undefined.<sup><a href="#note322"><b>322)</b></a></sup> If any argument is
not the correct type for the corresponding conversion specification, the behavior is
undefined.
If a conversion specification is invalid, the behavior is undefined.<sup><a href="#note322"><b>322)</b></a></sup> If any argument is
not the correct type for the corresponding conversion specification, the behavior is
undefined.
assignment-suppressing wide character or a field width, the behavior is
undefined.</pre>
% Matches a single % wide character; no conversion or assignment occurs. The
assignment-suppressing wide character or a field width, the behavior is
undefined.</pre>
% Matches a single % wide character; no conversion or assignment occurs. The
If a conversion specification is invalid, the behavior is undefined.<sup><a href="#note326"><b>326)</b></a></sup>
<p><!--para 14 -->
The conversion specifiers A, E, F, G, and X are also valid and behave the same as,
If a conversion specification is invalid, the behavior is undefined.<sup><a href="#note326"><b>326)</b></a></sup>
<p><!--para 14 -->
The conversion specifiers A, E, F, G, and X are also valid and behave the same as,
The following are the sequence points described in <a href="#5.1.2.3">5.1.2.3</a>:
<ul>
<li> Between the evaluations of the function designator and actual arguments in a function
The following are the sequence points described in <a href="#5.1.2.3">5.1.2.3</a>:
<ul>
<li> Between the evaluations of the function designator and actual arguments in a function
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>.
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>.
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
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
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:
<!--page 520 -->
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:
<!--page 520 -->
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:
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:
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:
<!--page 521 -->
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:
<!--page 521 -->
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.
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.
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
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
The returned value is independent of the current rounding direction mode.
<p><!--para 3 -->
The double version of ceil behaves as though implemented by
The returned value is independent of the current rounding direction mode.
<p><!--para 3 -->
The double version of ceil behaves as though implemented by
The ceil functions may, but are not required to, raise the ''inexact'' floating-point
exception for finite non-integer arguments, as this implementation does.
The ceil functions may, but are not required to, raise the ''inexact'' floating-point
exception for finite non-integer arguments, as this implementation does.
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:
<pre>
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:
<pre>
The * and / operators satisfy the following infinity properties for all real, imaginary, and
complex operands:<sup><a href="#note364"><b>364)</b></a></sup>
<ul>
The * and / operators satisfy the following infinity properties for all real, imaginary, and
complex operands:<sup><a href="#note364"><b>364)</b></a></sup>
<ul>
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>).
<!--page 550 -->
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>).
<!--page 550 -->
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.
<p><!--para 8 -->
EXAMPLE 2 Division of two double _Complex operands could be implemented as follows.
<!--page 551 -->
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.
<p><!--para 8 -->
EXAMPLE 2 Division of two double _Complex operands could be implemented as follows.
<!--page 551 -->
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
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
<p><!--para 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>):
<p><!--para 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>):
<pre>
cabs(x + iy) = hypot(x, y)
carg(x + iy) = atan2(y, x)</pre>
<pre>
cabs(x + iy) = hypot(x, y)
carg(x + iy) = atan2(y, x)</pre>
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):
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):
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
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
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.
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.
permissions</pre>
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,
permissions</pre>
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,
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.
<p><!--para 7 -->
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.
<p><!--para 7 -->