X-Git-Url: http://nsz.repo.hu/git/?p=c-standard;a=blobdiff_plain;f=n1256.html;h=5feddf5e0c34621859b58fef1678bee10787e2e7;hp=30198bee6d0ca7e8f3177a9980865ac9b3b63338;hb=5234a4a3a7a05617ef8685900091792cf82710f1;hpb=fb5050e94537cf9c61d58584264f1b3b0476e472 diff --git a/n1256.html b/n1256.html index 30198be..5feddf5 100644 --- a/n1256.html +++ b/n1256.html @@ -5,6 +5,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 +
ISO (the International Organization for Standardization) and IEC (the International @@ -476,6 +478,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 also for information only. +
With the introduction of new devices and extended character sets, new features may be @@ -509,12 +512,14 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 The library clause (clause 7) is based on the 1984 /usr/group Standard. +
This International Standard specifies the form and establishes the interpretation of @@ -552,6 +557,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 data-processing systems. It is intended for use by implementors and programmers. +
The following normative documents contain provisions which, through reference in this @@ -584,6 +590,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 designated IEC 559:1989). +
For the purposes of this International Standard, the following definitions apply. Other @@ -593,6 +600,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 Standard are to be interpreted according to ISO/IEC 2382-1. Mathematical symbols not defined in this International Standard are to be interpreted according to ISO 31-11. +
access
@@ -607,12 +615,14 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
NOTE 3 Expressions that are not evaluated do not access objects.
+
alignment
requirement that objects of a particular type be located on storage boundaries with
addresses that are particular multiples of a byte address
+
argument
@@ -622,11 +632,13 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
expression, or a sequence of preprocessing tokens in the comma-separated list bounded
by the parentheses in a function-like macro invocation
+
behavior
external appearance or action
+
implementation-defined behavior
@@ -636,6 +648,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
when a signed integer is shifted right.
+
locale-specific behavior
@@ -647,6 +660,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
characters other than the 26 lowercase Latin letters.
+
undefined behavior
@@ -662,6 +676,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
EXAMPLE An example of undefined behavior is the behavior on integer overflow.
+
unspecified behavior
@@ -673,6 +688,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
evaluated.
+
bit
@@ -682,6 +698,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
NOTE It need not be possible to express the address of each individual bit of an object.
+
byte
@@ -696,12 +713,14 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
bit.
+
character
<abstract> member of a set of elements used for the organization, control, or
representation of data
+
character
@@ -709,6 +728,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
<C> bit representation that fits in a byte
+
multibyte character
@@ -718,36 +738,42 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
NOTE The extended character set is a superset of the basic character set.
+
wide character
bit representation that fits in an object of type wchar_t, capable of representing any
character in the current locale
+
constraint
restriction, either syntactic or semantic, by which the exposition of language elements is
to be interpreted
+
correctly rounded result
representation in the result format that is nearest in value, subject to the current rounding
mode, to what the result would be given unlimited range and precision
+
diagnostic message
message belonging to an implementation-defined subset of the implementation's message
output
+
forward reference
reference to a later subclause of this International Standard that contains additional
information relevant to this subclause
+
implementation
@@ -755,11 +781,13 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
control options, that performs translation of programs for, and supports execution of
functions in, a particular execution environment
+
implementation limit
restriction imposed upon programs by the implementation
+
object
@@ -770,6 +798,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
NOTE When referenced, an object may be interpreted as having a particular type; see 6.3.2.1.
+
parameter
@@ -779,27 +808,32 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
entry to the function, or an identifier from the comma-separated list bounded by the
parentheses immediately following the macro name in a function-like macro definition
+
recommended practice
specification that is strongly recommended as being in keeping with the intent of the
standard, but that may be impractical for some implementations
+
value
precise meaning of the contents of an object when interpreted as having a specific type
+
implementation-defined value
unspecified value where each implementation documents how the choice is made
+
indeterminate value
either an unspecified value or a trap representation
+
unspecified value
@@ -809,6 +843,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
NOTE An unspecified value cannot be a trap representation.
+
[^ x ^]
@@ -817,6 +852,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
EXAMPLE [^2.4^] is 3, [^-2.4^] is -2.
+
[_ x _]
@@ -825,6 +861,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
EXAMPLE [_2.4_] is 2, [_-2.4_] is -3.
+
In this International Standard, ''shall'' is to be interpreted as a requirement on an @@ -899,6 +936,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 implementation. +
An implementation translates C source files and executes C programs in two data- @@ -909,10 +947,13 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
Forward references: In this clause, only a few of many possible forward references have been noted. +
A C program need not all be translated at the same time. The text of the program is kept @@ -928,6 +969,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
Forward references: linkages of identifiers (6.2.2), external definitions (6.9), preprocessing directives (6.10). +
The precedence among the syntax rules of translation is specified by the following @@ -993,6 +1035,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 character. +
A conforming implementation shall produce at least one diagnostic message (identified in @@ -1016,6 +1059,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 valid program is still correctly translated. It may also successfully translate an invalid program. +
Two execution environments are defined: freestanding and hosted. In both cases, @@ -1026,6 +1070,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 environment.
Forward references: storage durations of objects (6.2.4), initialization (6.7.8). +
In a freestanding environment (in which C program execution may take place without any @@ -1036,6 +1081,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 The effect of program termination in a freestanding environment is implementation- defined. +
A hosted environment need not be provided, but shall conform to the following @@ -1046,6 +1092,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 +
The function called at program startup is named main. The implementation declares no @@ -1088,6 +1135,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 char ** argv, and so on. +
In a hosted environment, a program may use all the functions, macros, type definitions, @@ -1097,6 +1145,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 +
If the return type of the main function is a type compatible with int, a return from the @@ -1111,6 +1160,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 will have ended in the former case, even where they would not have in the latter. +
The semantic descriptions in this International Standard describe the behavior of an @@ -1287,8 +1337,10 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 effects matter, freeing the implementations in other cases. +
Two sets of characters and their associated collating sequences shall be defined: the set in @@ -1345,6 +1397,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
Forward references: universal character names (6.4.3), character constants (6.4.4.4), preprocessing directives (6.10), string literals (6.4.5), comments (6.4.9), string (7.1.1). +
Before any other processing takes place, each occurrence of one of the following @@ -1383,6 +1436,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 described in ISO/IEC 646, which is a subset of the seven-bit US ASCII code set. +
The source character set may contain multibyte characters, used to represent members of @@ -1414,6 +1468,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 of a sequence of valid multibyte characters. +
The active position is that location on a display device where the next character output by @@ -1450,6 +1505,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 International Standard.
Forward references: the isprint function (7.4.1.8), the fputc function (7.19.7.3). +
Functions shall be implemented such that they may be interrupted at any time by a signal, @@ -1459,6 +1515,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 image (the instructions that compose the executable representation of a function) on a per-invocation basis. +
Both the translation and execution environments constrain the implementation of @@ -1466,6 +1523,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 environmental limits on a conforming implementation; the library-related limits are discussed in clause 7. +
The implementation shall be able to translate and execute at least one program that @@ -1512,6 +1570,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
14) See ''future language directions'' (6.11.3). +
An implementation is required to document all the limits specified in this subclause, @@ -1519,6 +1578,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 specified in <stdint.h>.
Forward references: integer types <stdint.h> (7.18). +
The values given below shall be replaced by constant expressions suitable for use in #if @@ -1621,6 +1681,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
The characteristics of floating types are defined in terms of a model that describes a @@ -1918,8 +1979,10 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 limits are one less than shown here. +
In the syntax notation used in this clause, syntactic categories (nonterminals) are @@ -1937,8 +2000,10 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
A summary of the language syntax is given in annex A. +
An identifier can denote an object; a function; a tag or a member of a structure, union, or @@ -1991,6 +2056,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 (6.9.1), identifiers (6.4.2), name spaces of identifiers (6.2.3), macro replacement (6.10.3), source file inclusion (6.10.2), statements (6.8). +
An identifier declared in different scopes or in the same scope more than once can be @@ -2039,6 +2105,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
23) As specified in 6.2.1, the later declaration might hide the prior declaration. +
If more than one declaration of a particular identifier is visible at any point in a @@ -2067,6 +2134,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
24) There is only one name space for tags even though three are possible. +
An object has a storage duration that determines its lifetime. There are three storage @@ -2118,6 +2186,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 embedded block prior to the declaration, leaves the scope of the declaration. +
The meaning of a value stored in an object or returned by a function is determined by the @@ -2335,8 +2404,10 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 arguments to functions, return values from functions, and members of unions. +
The representations of all types are unspecified except as stated in this subclause. @@ -2403,6 +2474,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 on values of type T may distinguish between them. +
For unsigned integer types other than unsigned char, the bits of the object @@ -2473,6 +2545,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 bits. +
Two types have compatible type if their types are the same. Additional rules for @@ -2532,6 +2605,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
47) As specified in 6.2.1, the later declaration might hide the prior declaration. +
Several operators convert operand values from one type to another automatically. This @@ -2544,8 +2618,10 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 representation.
Forward references: cast operators (6.5.4). +
Every integer type has an integer conversion rank defined as follows: @@ -2595,11 +2671,13 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 shift operators, as specified by their respective subclauses. +
When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1. +
When a value with integer type is converted to another integer type other than _Bool, if @@ -2616,6 +2694,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
49) The rules describe arithmetic on the mathematical value, not the value of a given type of expression. +
When a finite value of real floating type is converted to an integer type other than _Bool, @@ -2637,6 +2716,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 range of portable real floating values is (-1, Utype_MAX+1). +
When a float is promoted to double or long double, or a double is promoted @@ -2652,11 +2732,13 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 value, chosen in an implementation-defined manner. If the value being converted is outside the range of values that can be represented, the behavior is undefined. +
When a value of complex type is converted to another complex type, both the real and imaginary parts follow the conversion rules for the corresponding real types. +
When a value of real type is converted to a complex type, the real part of the complex @@ -2667,6 +2749,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 complex value is discarded and the value of the real part is converted according to the conversion rules for the corresponding real type. +
Many operators that expect operands of arithmetic type cause conversions and yield result @@ -2724,8 +2807,10 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 described in 6.3.1.4 and 6.3.1.5. +
An lvalue is an expression with an object type or an incomplete type other than void;53) @@ -2774,6 +2859,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 designator and violates the constraint in 6.5.3.4. +
The (nonexistent) value of a void expression (an expression that has type void) shall not @@ -2782,6 +2868,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 expression, its value or designator is discarded. (A void expression is evaluated for its side effects.) +
A pointer to void may be converted to or from a pointer to any incomplete or object @@ -2839,6 +2926,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 correctly aligned for a pointer to type C. +
Syntax
@@ -2912,6 +3000,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 occur in source files. +
Syntax
@@ -2942,8 +3031,10 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
59) One possible specification for imaginary types appears in annex G. +
Syntax
@@ -3003,6 +3094,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 Extended characters may produce a long external identifier. +
Semantics
@@ -3043,6 +3135,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 identifier is explicitly declared using the name __func__, the behavior is undefined. +
Syntax
@@ -3083,6 +3176,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
63) Short identifiers for characters were first specified in ISO/IEC 10646-1/AMD9:1997. +
Syntax
@@ -3101,6 +3195,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007
Each constant has a type, determined by its form and value, as detailed later. +
Syntax
@@ -3232,6 +3327,7 @@ unsigned long long int its list and has no extended integer type, then the integer constant has no type. +
Syntax
@@ -3321,6 +3417,7 @@ unsigned long long int floating constants (see 7.20.1.3). +
Syntax
@@ -3333,6 +3430,7 @@ unsigned long long int An identifier declared as an enumeration constant has type int.
Forward references: enumeration specifiers (6.7.2.2). +
Syntax
@@ -3467,6 +3565,7 @@ unsigned long long int the result is not a token and a diagnostic is required. See ''future language directions'' (6.11.4). +
Syntax
@@ -3534,6 +3633,7 @@ unsigned long long int it by a \0 escape sequence. +
Syntax
@@ -3575,6 +3675,7 @@ unsigned long long int interchanged. +
Syntax
@@ -3633,6 +3734,7 @@ unsigned long long int
70) For an example of a header name preprocessing token used in a #pragma directive, see 6.10.9. +
Syntax
@@ -3664,6 +3766,7 @@ unsigned long long int +
Except within a character constant, a string literal, or a comment, the characters /* @@ -3701,6 +3804,7 @@ unsigned long long int
71) Thus, /* ... */ comments do not nest. +
An expression is a sequence of operators and operands that specifies computation of a @@ -3803,6 +3907,7 @@ unsigned long long int documented. +
Syntax
@@ -3834,6 +3939,7 @@ unsigned long long int
79) Thus, an undeclared identifier is a violation of the syntax. +
Syntax
@@ -3860,6 +3966,7 @@ unsigned long long int argument-expression-list , assignment-expression +
Constraints
@@ -3898,6 +4005,7 @@ unsigned long long int (6.5.3.2), array declarators (6.7.5.2). +
Constraints
@@ -3987,6 +4095,7 @@ unsigned long long int adjusted to have a pointer type as described in 6.9.1. +
Constraints
@@ -4101,6 +4210,7 @@ unsigned long long int its operand), the expression (&E)->MOS is the same as E.MOS. +
Constraints
@@ -4120,6 +4230,7 @@ unsigned long long int it).
Forward references: additive operators (6.5.6), compound assignment (6.5.16.2). +
Constraints
@@ -4265,6 +4376,7 @@ unsigned long long int the same or overlapping representations. +
Syntax
@@ -4280,6 +4392,7 @@ unsigned long long int & * + - ~ ! +
Constraints
@@ -4296,6 +4409,7 @@ unsigned long long int operand is decremented.
Forward references: additive operators (6.5.6), compound assignment (6.5.16.2). +
Constraints
@@ -4334,6 +4448,7 @@ unsigned long long int end of its lifetime. +
Constraints
@@ -4362,6 +4477,7 @@ unsigned long long int +
Constraints
@@ -4433,6 +4549,7 @@ unsigned long long int size of the adjusted (pointer) type (see 6.9.1). +
Syntax
@@ -4470,6 +4587,7 @@ unsigned long long int unqualified version of the type. +
Syntax
@@ -4502,6 +4620,7 @@ unsigned long long int
90) This is often called ''truncation toward zero''. +
Syntax
@@ -4604,6 +4723,7 @@ unsigned long long int element'' requirements. +
Syntax
@@ -4638,6 +4758,7 @@ unsigned long long int part of the quotient of E1 / 2E2 . If E1 has a signed type and a negative value, the resulting value is implementation-defined. +
Syntax
@@ -4690,6 +4811,7 @@ unsigned long long int means (a<b)<c; in other words, ''if a is less than b, compare 1 to c; otherwise, compare 0 to c''. +
Syntax
@@ -4751,6 +4873,7 @@ unsigned long long int behavior. +
Syntax
@@ -4775,6 +4898,7 @@ unsigned long long int +
Syntax
@@ -4794,6 +4918,7 @@ unsigned long long int in the result is set if and only if exactly one of the corresponding bits in the converted operands is set). +
Syntax
@@ -4814,6 +4939,7 @@ unsigned long long int operands is set). +
Syntax
@@ -4834,6 +4960,7 @@ unsigned long long int there is a sequence point after the evaluation of the first operand. If the first operand compares equal to 0, the second operand is not evaluated. +
Syntax
@@ -4855,6 +4982,7 @@ unsigned long long int unequal to 0, the second operand is not evaluated. +
Syntax
@@ -4931,6 +5059,7 @@ unsigned long long int
95) A conditional expression does not yield an lvalue. +
Syntax
@@ -4958,6 +5087,7 @@ unsigned long long int behavior is undefined. +
Constraints
@@ -5038,6 +5168,7 @@ unsigned long long int not volatile from the type int volatile * const). +
Constraints
@@ -5053,6 +5184,7 @@ unsigned long long int expression E1 = E1 op (E2) only in that the lvalue E1 is evaluated only once. +
Syntax
@@ -5088,6 +5220,7 @@ unsigned long long int
97) A comma operator does not yield an lvalue. +
Syntax
@@ -5176,6 +5309,7 @@ unsigned long long int the expression is a valid integer constant expression with value one. +
Syntax
@@ -5235,6 +5369,7 @@ unsigned long long int
101) Function definitions have a different syntax, described in 6.9.1. +
Syntax
@@ -5284,6 +5419,7 @@ unsigned long long int register is sizeof. +
Syntax
@@ -5361,6 +5497,7 @@ unsigned long long int
104) Freestanding implementations are not required to provide complex types. * +
Syntax
@@ -5572,6 +5709,7 @@ unsigned long long int layouts. +
Syntax
@@ -5635,6 +5773,7 @@ unsigned long long int been seen. +
Constraints
@@ -5767,6 +5906,7 @@ unsigned long long int
113) A similar construction with enum does not exist. +
Syntax
@@ -5872,6 +6012,7 @@ unsigned long long int
118) Both of these can occur through the use of typedefs. +
Let D be a declaration of an ordinary identifier that provides a means of designating an @@ -5995,6 +6136,7 @@ unsigned long long int expressions *p and p[1] are not. +
Syntax
@@ -6079,6 +6221,7 @@ unsigned long long int duration are also distinct in each of the definitions. +
Syntax
@@ -6154,6 +6297,7 @@ unsigned long long int directly or via one or more typedefs.
Forward references: array declarators (6.7.5.2), type definitions (6.7.7). +
Semantics
@@ -6189,6 +6333,7 @@ unsigned long long int declares constant_ptr as an object that has type ''const-qualified pointer to int''. +
Constraints
@@ -6312,6 +6457,7 @@ unsigned long long int
124) Thus, * can be used only in function declarations that are not definitions (see 6.7.5.3). +
Constraints
@@ -6482,6 +6628,7 @@ unsigned long long int
127) If both function types are ''old style'', parameter types are not compared. +
Syntax
@@ -6536,6 +6683,7 @@ unsigned long long int parameter specification'', rather than redundant parentheses around the omitted identifier. +
Syntax
@@ -6643,6 +6791,7 @@ unsigned long long int } +
Syntax
@@ -6980,6 +7129,7 @@ unsigned long long int
133) In particular, the evaluation order need not be the same as the order of subobject initialization. +
Syntax
@@ -7013,6 +7163,7 @@ unsigned long long int
Forward references: expression and null statements (6.8.3), selection statements (6.8.4), iteration statements (6.8.5), the return statement (6.8.6.4). +
Syntax
@@ -7036,6 +7187,7 @@ unsigned long long int them.
Forward references: the goto statement (6.8.6.1), the switch statement (6.8.4.2). +
Syntax
@@ -7053,6 +7205,7 @@ unsigned long long int
A compound statement is a block. +
Syntax
@@ -7112,6 +7265,7 @@ unsigned long long int
134) Such as assignments, and function calls which have side effects. +
Syntax
@@ -7130,6 +7284,7 @@ unsigned long long int enclosing block. Each associated substatement is also a block whose scope is a strict subset of the scope of the selection statement. +
Constraints
@@ -7145,6 +7300,7 @@ unsigned long long int An else is associated with the lexically nearest preceding if that is allowed by the syntax. +
Constraints
@@ -7207,6 +7363,7 @@ unsigned long long int default label associated with the switch that is in the block containing the declaration. +
Syntax
@@ -7243,16 +7400,19 @@ unsigned long long int statement is not evaluated before entering the loop body, nor is clause-1 of a for statement. +
The evaluation of the controlling expression takes place before each execution of the loop body. +
The evaluation of the controlling expression takes place after each execution of the loop body. +
The statement @@ -7277,6 +7437,7 @@ unsigned long long int specifies an operation (such as incrementing) that is performed after each iteration. +
Syntax
@@ -7296,6 +7457,7 @@ unsigned long long int +
Constraints
@@ -7353,6 +7515,7 @@ unsigned long long int +
Constraints
@@ -7377,6 +7540,7 @@ unsigned long long int
138) Following the contin: label is a null statement. +
Constraints
@@ -7390,6 +7554,7 @@ unsigned long long int +
Constraints
@@ -7441,6 +7606,7 @@ unsigned long long int range and precision. +
Syntax
@@ -7487,6 +7653,7 @@ unsigned long long int external definition for it. +
Syntax
@@ -7627,6 +7794,7 @@ unsigned long long int
142) See ''future language directions'' (6.11.7). +
Semantics
@@ -7673,6 +7841,7 @@ unsigned long long int zero on program startup. +
Syntax
@@ -7781,6 +7950,7 @@ unsigned long long int # character string literal creation operator in 6.10.3.2, for example). +
Constraints
@@ -7880,6 +8050,7 @@ unsigned long long int including within a preprocessing directive. +
Constraints
@@ -7967,6 +8138,7 @@ unsigned long long int phases in 5.1.1.2); thus, an expansion that results in two string literals is an invalid directive. +
Constraints
@@ -8059,6 +8231,7 @@ unsigned long long int
150) Despite the name, a non-directive is a preprocessing directive. +
After the arguments for the invocation of a function-like macro have been identified, @@ -8073,6 +8246,7 @@ unsigned long long int were a parameter, and the variable arguments shall form the preprocessing tokens used to replace it. +
Constraints
@@ -8097,6 +8271,7 @@ unsigned long long int ## operators is unspecified. +
Constraints
@@ -8149,6 +8324,7 @@ unsigned long long int exist only within translation phase 4. +
After all parameters in the replacement list have been substituted and # and ## @@ -8167,6 +8343,7 @@ unsigned long long int as a preprocessing directive even if it resembles one, but all pragma unary operator expressions within it are then processed as specified in 6.10.9 below. +
A macro definition lasts (independent of block structure) until a corresponding #undef @@ -8325,6 +8502,7 @@ unsigned long long int +
Constraints
@@ -8362,6 +8540,7 @@ unsigned long long int previous forms and is then processed as appropriate. +
Semantics
@@ -8372,6 +8551,7 @@ unsigned long long int causes the implementation to produce a diagnostic message that includes the specified sequence of preprocessing tokens. +
Semantics
@@ -8414,6 +8594,7 @@ unsigned long long int
153) See ''future language directions'' (6.11.8). +
Semantics
@@ -8423,6 +8604,7 @@ unsigned long long int has no effect. +
The following macro names154) shall be defined by the implementation: @@ -8491,6 +8673,7 @@ unsigned long long int int that is increased with each revision of this International Standard. +
Semantics
@@ -8524,58 +8707,71 @@ unsigned long long int LISTING ( ..\listing.dir ) +
Future standardization may include additional floating-point types, including those with greater range, precision, or both than long double. +
Declaring an identifier with internal linkage at file scope without the static storage- class specifier is an obsolescent feature. +
Restriction of the significance of an external name to fewer than 255 characters (considering each universal character name or extended source character as a single character) is an obsolescent feature that is a concession to existing implementations. +
Lowercase letters as escape sequences are reserved for future standardization. Other characters may be used in extensions. +
The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature. +
The use of function declarators with empty parentheses (not prototype-format parameter type declarators) is an obsolescent feature. +
The use of function definitions with separate parameter identifier and declaration lists (not prototype-format parameter type and identifier declarators) is an obsolescent feature. +
Pragmas whose first preprocessing token is STDC are reserved for future standardization. +
Macro names beginning with __STDC_ are reserved for future standardization. +
A string is a contiguous sequence of characters terminated by and including the first null @@ -8619,6 +8815,7 @@ unsigned long long int implementation's choice. +
Each library function is declared, with a type that includes a prototype, in a header,159) @@ -8671,6 +8868,7 @@ unsigned long long int necessarily valid source file names. +
Each header declares or defines all identifiers listed in its associated subclause, and @@ -8705,6 +8903,7 @@ unsigned long long int setjmp, and va_end. +
Each of the following statements applies unless explicitly stated otherwise in the detailed @@ -8810,6 +9009,7 @@ unsigned long long int
164) Thus, a signal handler cannot, in general, call standard library functions. +
The header <assert.h> defines the assert macro and refers to another macro, @@ -8829,8 +9029,10 @@ unsigned long long int macro definition is suppressed in order to access an actual function, the behavior is undefined. +
Synopsis
@@ -8863,8 +9065,10 @@ unsigned long long int Assertion failed: expression, function abc, file xyz, line nnn. +
The header <complex.h> defines macros and declares functions that support complex @@ -8920,11 +9124,13 @@ unsigned long long int
168) A specification for imaginary types is in informative annex G. +
Values are interpreted as radians, not degrees. An implementation may set errno but is not required to. +
Some of the functions below have branch cuts, across which the function is @@ -8944,6 +9150,7 @@ unsigned long long int the finite endpoint of the cut along the negative real axis approaches the cut from above, so the cut maps to the positive imaginary axis. +
Synopsis
@@ -8981,8 +9188,10 @@ unsigned long long int where the programmer can determine they are safe. +
Synopsis
@@ -9002,6 +9211,7 @@ unsigned long long int mathematically unbounded along the imaginary axis and in the interval [0, pi ] along the real axis. +
Synopsis
@@ -9022,6 +9232,7 @@ unsigned long long int along the real axis. +
Synopsis
@@ -9041,6 +9252,7 @@ unsigned long long int mathematically unbounded along the imaginary axis and in the interval [-pi /2, +pi /2] along the real axis. +
Synopsis
@@ -9057,6 +9269,7 @@ unsigned long long int
The ccos functions return the complex cosine value. +
Synopsis
@@ -9074,6 +9287,7 @@ unsigned long long int The csin functions return the complex sine value. +
Synopsis
@@ -9090,8 +9304,10 @@ unsigned long long int
The ctan functions return the complex tangent value. +
Synopsis
@@ -9111,6 +9327,7 @@ unsigned long long int half-strip of non-negative values along the real axis and in the interval [-ipi , +ipi ] along the imaginary axis. +
Synopsis
@@ -9131,6 +9348,7 @@ unsigned long long int strip mathematically unbounded along the real axis and in the interval [-ipi /2, +ipi /2] along the imaginary axis. +
Synopsis
@@ -9150,6 +9368,7 @@ unsigned long long int strip mathematically unbounded along the real axis and in the interval [-ipi /2, +ipi /2] along the imaginary axis. +
Synopsis
@@ -9166,6 +9385,7 @@ unsigned long long int
The ccosh functions return the complex hyperbolic cosine value. +
Synopsis
@@ -9183,6 +9403,7 @@ unsigned long long int
The csinh functions return the complex hyperbolic sine value. +
Synopsis
@@ -9199,8 +9420,10 @@ unsigned long long int
The ctanh functions return the complex hyperbolic tangent value. +
Synopsis
@@ -9217,6 +9440,7 @@ unsigned long long int
The cexp functions return the complex base-e exponential value. +
Synopsis
@@ -9237,8 +9461,10 @@ unsigned long long int mathematically unbounded along the real axis and in the interval [-ipi , +ipi ] along the imaginary axis. +
Synopsis
@@ -9256,6 +9482,7 @@ unsigned long long int
The cabs functions return the complex absolute value. +
Synopsis
@@ -9275,6 +9502,7 @@ unsigned long long int The cpow functions return the complex power function value. +
Synopsis
@@ -9293,8 +9521,10 @@ unsigned long long int The csqrt functions return the complex square root value, in the range of the right half- plane (including the imaginary axis). +
Synopsis
@@ -9312,6 +9542,7 @@ unsigned long long int
The carg functions return the value of the argument in the interval [-pi , +pi ]. +
Synopsis
@@ -9333,6 +9564,7 @@ unsigned long long int
170) For a variable z of complex type, z == creal(z) + cimag(z)*I. +
Synopsis
@@ -9350,6 +9582,7 @@ unsigned long long int
The conj functions return the complex conjugate value. +
Synopsis
@@ -9377,6 +9610,7 @@ unsigned long long int +
Synopsis
@@ -9402,6 +9636,7 @@ unsigned long long int
171) For a variable z of complex type, z == creal(z) + cimag(z)*I. +
The header <ctype.h> declares several functions useful for classifying and mapping @@ -9426,11 +9661,13 @@ unsigned long long int values lie from 0 (NUL) through 0x1F (US), and the character 0x7F (DEL). +
The functions in this subclause return nonzero (true) if and only if the value of the argument c conforms to that in the description of the function. +
Synopsis
@@ -9442,6 +9679,7 @@ unsigned long long int
The isalnum function tests for any character for which isalpha or isdigit is true. +
Synopsis
@@ -9465,6 +9703,7 @@ unsigned long long int characters; all four combinations are possible. +
Synopsis
@@ -9480,6 +9719,7 @@ unsigned long long int space (' '), and horizontal tab ('\t'). In the "C" locale, isblank returns true only for the standard blank characters. +
Synopsis
@@ -9491,6 +9731,7 @@ unsigned long long int
The iscntrl function tests for any control character. +
Synopsis
@@ -9502,6 +9743,7 @@ unsigned long long int
The isdigit function tests for any decimal-digit character (as defined in 5.2.1). +
Synopsis
@@ -9518,6 +9760,7 @@ unsigned long long int
The isgraph function tests for any printing character except space (' '). +
Synopsis
@@ -9532,6 +9775,7 @@ unsigned long long int isspace is true. In the "C" locale, islower returns true only for the lowercase letters (as defined in 5.2.1). +
Synopsis
@@ -9543,6 +9787,7 @@ unsigned long long int
The isprint function tests for any printing character including space (' '). +
Synopsis
@@ -9557,6 +9802,7 @@ unsigned long long int locale, ispunct returns true for every printing character for which neither isspace nor isalnum is true. +
Synopsis
@@ -9573,6 +9819,7 @@ unsigned long long int ('\n'), carriage return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). In the "C" locale, isspace returns true only for the standard white-space characters. +
Synopsis
@@ -9587,6 +9834,7 @@ unsigned long long int isspace is true. In the "C" locale, isupper returns true only for the uppercase letters (as defined in 5.2.1). +
Synopsis
@@ -9598,8 +9846,10 @@ unsigned long long int
The isxdigit function tests for any hexadecimal-digit character (as defined in 6.4.4.1). +
Synopsis
@@ -9618,6 +9868,7 @@ unsigned long long int for any given locale); otherwise, the argument is returned unchanged. +
Synopsis
@@ -9636,6 +9887,7 @@ unsigned long long int for any given locale); otherwise, the argument is returned unchanged. +
The header <errno.h> defines several macros, all relating to the reporting of error @@ -9683,6 +9935,7 @@ unsigned long long int
177) See ''future library directions'' (7.26.3). +
The header <fenv.h> declares two types and several macros and functions to provide @@ -9798,6 +10051,7 @@ unsigned long long int FLT_ROUNDS, they are not required to do so. +
Synopsis
@@ -9862,6 +10116,7 @@ unsigned long long int ''off'', just one evaluation of x + 1 would suffice. +
The following functions provide access to the floating-point status flags.186) The int @@ -9878,6 +10133,7 @@ unsigned long long int content of flags. +
Synopsis
@@ -9897,6 +10153,7 @@ unsigned long long int +
Synopsis
@@ -9915,6 +10172,7 @@ unsigned long long int The fegetexceptflag function returns zero if the representation was successfully stored. Otherwise, it returns a nonzero value. +
Synopsis
@@ -9945,6 +10203,7 @@ unsigned long long int in F.7.6 is in the same spirit. +
Synopsis
@@ -9967,6 +10226,7 @@ unsigned long long int all the specified flags were successfully set to the appropriate state. Otherwise, it returns a nonzero value. +
Synopsis
@@ -10011,11 +10271,13 @@ unsigned long long int
188) This mechanism allows testing several floating-point exceptions with just one function call. +
The fegetround and fesetround functions provide control of rounding direction modes. +
Synopsis
@@ -10032,6 +10294,7 @@ unsigned long long int representing the current rounding direction or a negative value if there is no such rounding direction macro or the current rounding direction is not determinable. +
Synopsis
@@ -10070,11 +10333,13 @@ unsigned long long int +
The functions in this section manage the floating-point environment -- status flags and control modes -- as one entity. +
Synopsis
@@ -10091,6 +10356,7 @@ unsigned long long int The fegetenv function returns zero if the environment was successfully stored. Otherwise, it returns a nonzero value. +
Synopsis
@@ -10117,6 +10383,7 @@ unsigned long long int function to write routines that hide spurious floating-point exceptions from their callers. +
Synopsis
@@ -10136,6 +10403,7 @@ unsigned long long int The fesetenv function returns zero if the environment was successfully established. Otherwise, it returns a nonzero value. +
Synopsis
@@ -10181,6 +10449,7 @@ unsigned long long int } +
The header <float.h> defines several macros that expand to various limits and @@ -10190,6 +10459,7 @@ unsigned long long int in 5.2.4.2.2. +
The header <inttypes.h> includes the header <stdint.h> and extends it with @@ -10210,6 +10480,7 @@ unsigned long long int
190) See ''future library directions'' (7.26.4). +
Each of the following object-like macros191) expands to a character string literal @@ -10282,8 +10553,10 @@ unsigned long long int same. +
Synopsis
@@ -10307,6 +10580,7 @@ unsigned long long int
193) The absolute value of the most negative number cannot be represented in two's complement. +
Synopsis
@@ -10325,6 +10599,7 @@ unsigned long long int quot (the quotient) and rem (the remainder), each of which has type intmax_t. If either part of the result cannot be represented, the behavior is undefined. +
Synopsis
@@ -10351,6 +10626,7 @@ unsigned long long int (7.20.1.4). +
Synopsis
@@ -10378,6 +10654,7 @@ unsigned long long int (7.24.4.1.2). +
The header <iso646.h> defines the following eleven macros (on the left) that expand @@ -10397,6 +10674,7 @@ unsigned long long int xor_eq ^= +
The header <limits.h> defines several macros that expand to various limits and @@ -10406,6 +10684,7 @@ unsigned long long int in 5.2.4.2.1. +
The header <locale.h> declares two functions, one type, and defines several macros. @@ -10466,8 +10745,10 @@ unsigned long long int
195) See ''future library directions'' (7.26.5). +
Synopsis
@@ -10531,8 +10812,10 @@ unsigned long long int locale when category has the value LC_ALL. +
Synopsis
@@ -10766,6 +11049,7 @@ unsigned long long int +
The header <math.h> declares two types and many mathematical functions and defines @@ -10894,6 +11178,7 @@ unsigned long long int substantially slower. +
The behavior of each of the functions in <math.h> is specified for all representable @@ -10946,6 +11231,7 @@ unsigned long long int also ''flush-to-zero'' underflow. +
Synopsis
@@ -10973,11 +11259,13 @@ unsigned long long int +
In the synopses in this subclause, real-floating indicates that the argument shall be an expression of real floating type. +
Synopsis
@@ -11011,6 +11299,7 @@ unsigned long long int become subnormal when converted to double, and zero when converted to float. +
Synopsis
@@ -11034,6 +11323,7 @@ unsigned long long int The isfinite macro returns a nonzero value if and only if its argument has a finite value. +
Synopsis
@@ -11051,6 +11341,7 @@ unsigned long long int The isinf macro returns a nonzero value if and only if its argument has an infinite value. +
Synopsis
@@ -11072,6 +11363,7 @@ unsigned long long int NaNs in the evaluation type but not in the semantic type. +
Synopsis
@@ -11095,6 +11387,7 @@ unsigned long long int The isnormal macro returns a nonzero value if and only if its argument has a normal value. +
Synopsis
@@ -11115,8 +11408,10 @@ unsigned long long int unsigned, it is treated as positive. +
Synopsis
@@ -11139,6 +11434,7 @@ unsigned long long int +
Synopsis
@@ -11156,6 +11452,7 @@ unsigned long long int
The asin functions return arcsin x in the interval [-pi /2, +pi /2] radians. +
Synopsis
@@ -11172,6 +11469,7 @@ unsigned long long int
The atan functions return arctan x in the interval [-pi /2, +pi /2] radians. +
Synopsis
@@ -11191,6 +11489,7 @@ unsigned long long int The atan2 functions return arctan y/x in the interval [-pi , +pi ] radians. +
Synopsis
@@ -11207,6 +11506,7 @@ unsigned long long int
The cos functions return cos x. +
Synopsis
@@ -11223,6 +11523,7 @@ unsigned long long int
The sin functions return sin x. +
Synopsis
@@ -11240,8 +11541,10 @@ unsigned long long int The tan functions return tan x. +
Synopsis
@@ -11259,6 +11562,7 @@ unsigned long long int
The acosh functions return arcosh x in the interval [0, +(inf)]. +
Synopsis
@@ -11275,6 +11579,7 @@ unsigned long long int
The asinh functions return arsinh x. +
Synopsis
@@ -11294,6 +11599,7 @@ unsigned long long int
The atanh functions return artanh x. +
Synopsis
@@ -11311,6 +11617,7 @@ unsigned long long int
The cosh functions return cosh x. +
Synopsis
@@ -11328,6 +11635,7 @@ unsigned long long int
The sinh functions return sinh x. +
Synopsis
@@ -11345,8 +11653,10 @@ unsigned long long int
The tanh functions return tanh x. +
Synopsis
@@ -11364,6 +11674,7 @@ unsigned long long int
The exp functions return ex. +
Synopsis
@@ -11381,6 +11692,7 @@ unsigned long long int
The exp2 functions return 2x. +
Synopsis
@@ -11403,6 +11715,7 @@ unsigned long long int
208) For small magnitude x, expm1(x) is expected to be more accurate than exp(x) - 1. +
Synopsis
@@ -11422,6 +11735,7 @@ unsigned long long int frexp functions return the value x, such that x has a magnitude in the interval [1/2, 1) or zero, and value equals x 2*exp . If value is zero, both parts of the result are zero. +
Synopsis
@@ -11449,6 +11763,7 @@ unsigned long long int The ilogb functions return the exponent of x as a signed int value.
Forward references: the logb functions (7.12.6.11). +
Synopsis
@@ -11466,6 +11781,7 @@ unsigned long long int
The ldexp functions return x 2exp . +
Synopsis
@@ -11483,6 +11799,7 @@ unsigned long long int
The log functions return loge x. +
Synopsis
@@ -11501,6 +11818,7 @@ unsigned long long int
The log10 functions return log10 x. +
Synopsis
@@ -11523,6 +11841,7 @@ unsigned long long int
209) For small magnitude x, log1p(x) is expected to be more accurate than log(1 + x). +
Synopsis
@@ -11545,6 +11864,7 @@ unsigned long long int +
Synopsis
@@ -11567,6 +11887,7 @@ unsigned long long int
The logb functions return the signed exponent of x. +
Synopsis
@@ -11586,6 +11907,7 @@ unsigned long long int The modf functions return the signed fractional part of value. +
Synopsis
@@ -11606,8 +11928,10 @@ unsigned long long int
The scalbn and scalbln functions return x FLT_RADIXn . +
Synopsis
@@ -11624,6 +11948,7 @@ unsigned long long int
The cbrt functions return x1/3. +
Synopsis
@@ -11641,6 +11966,7 @@ unsigned long long int
The fabs functions return | x |. +
Synopsis
@@ -11659,6 +11985,7 @@ unsigned long long int
The hypot functions return (sqrt)(x2 + y2). +
Synopsis
@@ -11678,6 +12005,7 @@ unsigned long long int
The pow functions return xy. +
Synopsis
@@ -11696,8 +12024,10 @@ unsigned long long int
The sqrt functions return (sqrt)(x). +
Synopsis
@@ -11719,6 +12049,7 @@ unsigned long long int (sqrt)(pi) 0 +
Synopsis
@@ -11742,6 +12073,7 @@ unsigned long long int +
Synopsis
@@ -11760,6 +12092,7 @@ unsigned long long int
The lgamma functions return loge | (Gamma)(x) |. +
Synopsis
@@ -11778,8 +12111,10 @@ unsigned long long int
The tgamma functions return (Gamma)(x). +
Synopsis
@@ -11797,6 +12132,7 @@ unsigned long long int
The ceil functions return [^x^], expressed as a floating-point number. +
Synopsis
@@ -11813,6 +12149,7 @@ unsigned long long int
The floor functions return [_x_], expressed as a floating-point number. +
Synopsis
@@ -11831,6 +12168,7 @@ unsigned long long int
The nearbyint functions return the rounded integer value. +
Synopsis
@@ -11850,6 +12188,7 @@ unsigned long long int
The rint functions return the rounded integer value. +
Synopsis
@@ -11872,6 +12211,7 @@ unsigned long long int
The lrint and llrint functions return the rounded integer value. +
Synopsis
@@ -11891,6 +12231,7 @@ unsigned long long int The round functions return the rounded integer value. +
Synopsis
@@ -11913,6 +12254,7 @@ unsigned long long int
The lround and llround functions return the rounded integer value. +
Synopsis
@@ -11931,8 +12273,10 @@ unsigned long long int The trunc functions return the truncated integer value. +
Synopsis
@@ -11952,6 +12296,7 @@ unsigned long long int whether a domain error occurs or the fmod functions return zero is implementation- defined. +
Synopsis
@@ -11981,6 +12326,7 @@ unsigned long long int x.'' This definition is applicable for all implementations. +
Synopsis
@@ -12003,8 +12349,10 @@ unsigned long long int pointed to by quo is unspecified and whether a domain error occurs or the functions return zero is implementation defined. +
Synopsis
@@ -12025,6 +12373,7 @@ unsigned long long int The copysign functions return a value with the magnitude of x and the sign of y. +
Synopsis
@@ -12048,6 +12397,7 @@ unsigned long long int If the implementation does not support quiet NaNs, the functions return zero.
Forward references: the strtod, strtof, and strtold functions (7.20.1.3). +
Synopsis
@@ -12077,6 +12427,7 @@ unsigned long long int function. +
Synopsis
@@ -12097,8 +12448,10 @@ unsigned long long int range or precision in a floating second argument. +
Synopsis
@@ -12121,6 +12474,7 @@ unsigned long long int
The fdim functions return the positive difference value. +
Synopsis
@@ -12146,6 +12500,7 @@ unsigned long long int fmax functions choose the numeric value. See F.9.9.2. +
Synopsis
@@ -12166,8 +12521,10 @@ unsigned long long int
214) The fmin functions are analogous to the fmax functions in their treatment of NaNs. +
Synopsis
@@ -12192,6 +12549,7 @@ unsigned long long int +
The relational and equality operators support the usual mathematical relationships @@ -12211,6 +12569,7 @@ unsigned long long int NaNs; the result in these cases is false. +
Synopsis
@@ -12228,6 +12587,7 @@ unsigned long long int
The isgreater macro returns the value of (x) > (y). +
Synopsis
@@ -12249,6 +12609,7 @@ unsigned long long int
The isgreaterequal macro returns the value of (x) >= (y). +
Synopsis
@@ -12266,6 +12627,7 @@ unsigned long long int
The isless macro returns the value of (x) < (y). +
Synopsis
@@ -12283,6 +12645,7 @@ unsigned long long int
The islessequal macro returns the value of (x) <= (y). +
Synopsis
@@ -12302,6 +12665,7 @@ unsigned long long int
The islessgreater macro returns the value of (x) < (y) || (x) > (y). +
Synopsis
@@ -12317,6 +12681,7 @@ unsigned long long int The isunordered macro returns 1 if its arguments are unordered and 0 otherwise. +
The header <setjmp.h> defines the macro setjmp, and declares one function and @@ -12342,8 +12707,10 @@ unsigned long long int a program. +
Synopsis
@@ -12378,8 +12745,10 @@ unsigned long long int
If the invocation appears in any other context, the behavior is undefined. +
Synopsis
@@ -12448,6 +12817,7 @@ unsigned long long int
218) This includes, but is not limited to, the floating-point status flags and the state of open files. +
The header <signal.h> declares a type and two functions and defines several macros, @@ -12499,8 +12869,10 @@ unsigned long long int and termination. +
Synopsis
@@ -12567,8 +12939,10 @@ unsigned long long int
220) If any signal is generated by an asynchronous signal handler, the behavior is undefined. +
Synopsis
@@ -12586,6 +12960,7 @@ unsigned long long int The raise function returns zero if successful, nonzero if unsuccessful. +
The header <stdarg.h> declares a type and defines four macros, for advancing @@ -12614,6 +12989,7 @@ unsigned long long int case the original function may make further use of the original list after the other function returns. +
The va_start and va_arg macros described in this subclause shall be implemented @@ -12624,6 +13000,7 @@ unsigned long long int shall be matched by a corresponding invocation of the va_end macro in the same function. +
Synopsis
@@ -12656,6 +13033,7 @@ unsigned long long int value of the argument after that specified by parmN . Successive invocations return the values of the remaining arguments in succession. +
Synopsis
@@ -12674,6 +13052,7 @@ unsigned long long int
The va_copy macro returns no value. +
Synopsis
@@ -12695,6 +13074,7 @@ unsigned long long int
The va_end macro returns no value. +
Synopsis
@@ -12778,6 +13158,7 @@ unsigned long long int } +
The header <stdbool.h> defines four macros. @@ -12815,6 +13196,7 @@ unsigned long long int
222) See ''future library directions'' (7.26.7). +
The following types and macros are defined in the standard header <stddef.h>. Some @@ -12864,6 +13246,7 @@ unsigned long long int
Forward references: localization (7.11). +
The header <stdint.h> declares sets of integer types having specified widths, and @@ -12896,6 +13279,7 @@ unsigned long long int
224) Some of these types may denote implementation-defined extended integer types. +
When typedef names differing only in the absence or presence of the initial u are defined, @@ -12910,6 +13294,7 @@ unsigned long long int +
The typedef name intN_t designates a signed integer type with width N , no padding @@ -12923,6 +13308,7 @@ unsigned long long int widths of 8, 16, 32, or 64 bits, no padding bits, and (for the signed types) that have a two's complement representation, it shall define the corresponding typedef names. +
The typedef name int_leastN_t designates a signed integer type with a width of at @@ -12943,6 +13329,7 @@ unsigned long long int All other types of this form are optional. +
Each of the following types designates an integer type that is usually fastest225) to operate @@ -12972,6 +13359,7 @@ unsigned long long int signedness and width requirements. +
The following type designates a signed integer type with the property that any valid @@ -12988,6 +13376,7 @@ unsigned long long int These types are optional. +
The following type designates a signed integer type capable of representing any value of @@ -13002,6 +13391,7 @@ unsigned long long int These types are required. +
The following object-like macros226) specify the minimum and maximum limits of the @@ -13022,6 +13412,7 @@ unsigned long long int before <stdint.h> is included. +
The following object-like macros227) specify the minimum and maximum limits of @@ -13175,6 +13571,7 @@ unsigned long long int character set. +
The following function-like macros230) expand to integer constants suitable for @@ -13200,6 +13597,7 @@ unsigned long long int defined before <stdint.h> is included. +
The macro INTN_C(value) shall expand to an integer constant expression @@ -13208,6 +13606,7 @@ unsigned long long int example, if uint_least64_t is a name for the type unsigned long long int, then UINT64_C(0x123) might expand to the integer constant 0x123ULL. +
The following macro expands to an integer constant expression having the value specified @@ -13222,8 +13621,10 @@ unsigned long long int UINTMAX_C(value) +
The header <stdio.h> declares three types, several macros, and many functions for @@ -13335,6 +13736,7 @@ unsigned long long int all possible strings of length FILENAME_MAX cannot be expected to be opened successfully. +
Input and output, whether to or from physical devices such as terminals and tape drives, @@ -13413,6 +13815,7 @@ unsigned long long int
233) The three predefined streams stdin, stdout, and stderr are unoriented at program startup. +
A stream is associated with an external file (which may be a physical device) by opening @@ -13523,8 +13926,10 @@ unsigned long long int with state-dependent encoding that does not assuredly end in the initial shift state. +
Synopsis
@@ -13542,6 +13947,7 @@ unsigned long long int
The remove function returns zero if the operation succeeds, nonzero if it fails. +
Synopsis
@@ -13566,6 +13972,7 @@ unsigned long long int or that it is necessary to copy its contents to effectuate its renaming. +
Synopsis
@@ -13591,6 +13998,7 @@ unsigned long long int cannot be created, the tmpfile function returns a null pointer.
Forward references: the fopen function (7.19.5.3). +
Synopsis
@@ -13630,8 +14038,10 @@ unsigned long long int is ended, and before program termination. +
Synopsis
@@ -13652,6 +14062,7 @@ unsigned long long int The fclose function returns zero if the stream was successfully closed, or EOF if any errors were detected. +
Synopsis
@@ -13675,6 +14086,7 @@ unsigned long long int error occurs, otherwise it returns zero.
Forward references: the fopen function (7.19.5.3). +
Synopsis
@@ -13740,6 +14152,7 @@ unsigned long long int conform to the properties in 7.19.2). +
Synopsis
@@ -13775,6 +14188,7 @@ unsigned long long int returned by the fopen function may be assigned. +
Synopsis
@@ -13793,6 +14207,7 @@ unsigned long long int The setbuf function returns no value.
Forward references: the setvbuf function (7.19.5.6). +
Synopsis
@@ -13829,6 +14244,7 @@ unsigned long long int before a buffer that has automatic storage duration is deallocated upon block exit. +
The formatted input/output functions shall behave as if there is a sequence point after the @@ -13838,6 +14254,7 @@ unsigned long long int
240) The fprintf functions perform writes to memory for the %n specifier. +
Synopsis
@@ -14195,6 +14612,7 @@ If a length modifier appears with any conversion specifier other than as specifi the case of fixed-point conversion by the source value as well. +
Synopsis
@@ -14560,6 +14978,7 @@ If a length modifier appears with any conversion specifier other than as specifi
253) See ''future library directions'' (7.26.9). +
Synopsis
@@ -14576,6 +14995,7 @@ If a length modifier appears with any conversion specifier other than as specifi The printf function returns the number of characters transmitted, or a negative value if an output or encoding error occurred. +
Synopsis
@@ -14594,6 +15014,7 @@ If a length modifier appears with any conversion specifier other than as specifi assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure. +
Synopsis
@@ -14618,6 +15039,7 @@ If a length modifier appears with any conversion specifier other than as specifi value if an encoding error occurred. Thus, the null-terminated output has been completely written if and only if the returned value is nonnegative and less than n. +
Synopsis
@@ -14637,6 +15059,7 @@ If a length modifier appears with any conversion specifier other than as specifi The sprintf function returns the number of characters written in the array, not counting the terminating null character, or a negative value if an encoding error occurred. +
Synopsis
@@ -14659,6 +15082,7 @@ If a length modifier appears with any conversion specifier other than as specifi early matching failure. +
Synopsis
@@ -14706,6 +15130,7 @@ If a length modifier appears with any conversion specifier other than as specifi vsscanf invoke the va_arg macro, the value of arg after the return is indeterminate. +
Synopsis
@@ -14729,6 +15154,7 @@ If a length modifier appears with any conversion specifier other than as specifi items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure. +
Synopsis
@@ -14750,6 +15176,7 @@ If a length modifier appears with any conversion specifier other than as specifi if an output or encoding error occurred. +
Synopsis
@@ -14772,6 +15199,7 @@ If a length modifier appears with any conversion specifier other than as specifi items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure. +
Synopsis
@@ -14797,6 +15225,7 @@ If a length modifier appears with any conversion specifier other than as specifi completely written if and only if the returned value is nonnegative and less than n. +
Synopsis
@@ -14819,6 +15248,7 @@ If a length modifier appears with any conversion specifier other than as specifi The vsprintf function returns the number of characters written in the array, not counting the terminating null character, or a negative value if an encoding error occurred. +
Synopsis
@@ -14843,8 +15273,10 @@ If a length modifier appears with any conversion specifier other than as specifi early matching failure. +
Synopsis
@@ -14870,6 +15302,7 @@ If a length modifier appears with any conversion specifier other than as specifi
255) An end-of-file and a read error can be distinguished by use of the feof and ferror functions. +
Synopsis
@@ -14896,6 +15329,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -14915,6 +15349,7 @@ If a length modifier appears with any conversion specifier other than as specifi The fputc function returns the character written. If a write error occurs, the error indicator for the stream is set and fputc returns EOF. +
Synopsis
@@ -14932,6 +15367,7 @@ If a length modifier appears with any conversion specifier other than as specifi The fputs function returns EOF if a write error occurs; otherwise it returns a nonnegative value. +
Synopsis
@@ -14952,6 +15388,7 @@ If a length modifier appears with any conversion specifier other than as specifi getc returns EOF. If a read error occurs, the error indicator for the stream is set and getc returns EOF. +
Synopsis
@@ -14969,6 +15406,7 @@ If a length modifier appears with any conversion specifier other than as specifi getchar returns EOF. If a read error occurs, the error indicator for the stream is set and getchar returns EOF. +
Synopsis
@@ -14991,6 +15429,7 @@ If a length modifier appears with any conversion specifier other than as specifi
Forward references: future library directions (7.26.9). +
Synopsis
@@ -15008,6 +15447,7 @@ If a length modifier appears with any conversion specifier other than as specifi The putc function returns the character written. If a write error occurs, the error indicator for the stream is set and putc returns EOF. +
Synopsis
@@ -15023,6 +15463,7 @@ If a length modifier appears with any conversion specifier other than as specifi The putchar function returns the character written. If a write error occurs, the error indicator for the stream is set and putchar returns EOF. +
Synopsis
@@ -15041,6 +15482,7 @@ If a length modifier appears with any conversion specifier other than as specifi value. +
Synopsis
@@ -15087,8 +15529,10 @@ If a length modifier appears with any conversion specifier other than as specifi
256) See ''future library directions'' (7.26.9). +
Synopsis
@@ -15114,6 +15558,7 @@ If a length modifier appears with any conversion specifier other than as specifi fread returns zero and the contents of the array and the state of the stream remain unchanged. +
Synopsis
@@ -15139,8 +15584,10 @@ If a length modifier appears with any conversion specifier other than as specifi less than nmemb only if a write error is encountered. If size or nmemb is zero, fwrite returns zero and the state of the stream remains unchanged. +
Synopsis
@@ -15161,6 +15608,7 @@ If a length modifier appears with any conversion specifier other than as specifi returns nonzero and stores an implementation-defined positive value in errno.
Forward references: the fsetpos function (7.19.9.3). +
Synopsis
@@ -15193,6 +15641,7 @@ If a length modifier appears with any conversion specifier other than as specifi The fseek function returns nonzero only for a request that cannot be satisfied.
Forward references: the ftell function (7.19.9.4). +
Synopsis
@@ -15217,6 +15666,7 @@ If a length modifier appears with any conversion specifier other than as specifi If successful, the fsetpos function returns zero; on failure, the fsetpos function returns nonzero and stores an implementation-defined positive value in errno. +
Synopsis
@@ -15240,6 +15690,7 @@ If a length modifier appears with any conversion specifier other than as specifi for the stream. On failure, the ftell function returns -1L and stores an implementation-defined positive value in errno. +
Synopsis
@@ -15259,8 +15710,10 @@ If a length modifier appears with any conversion specifier other than as specifi
The rewind function returns no value. +
Synopsis
@@ -15277,6 +15730,7 @@ If a length modifier appears with any conversion specifier other than as specifi The clearerr function returns no value. +
Synopsis
@@ -15292,6 +15746,7 @@ If a length modifier appears with any conversion specifier other than as specifi The feof function returns nonzero if and only if the end-of-file indicator is set for stream. +
Synopsis
@@ -15307,6 +15762,7 @@ If a length modifier appears with any conversion specifier other than as specifi The ferror function returns nonzero if and only if the error indicator is set for stream. +
Synopsis
@@ -15328,6 +15784,7 @@ If a length modifier appears with any conversion specifier other than as specifi
Forward references: the strerror function (7.21.6.2). +
The header <stdlib.h> declares five types and several functions of general utility, and @@ -15379,12 +15836,14 @@ If a length modifier appears with any conversion specifier other than as specifi
257) See ''future library directions'' (7.26.10). +
The functions atof, atoi, atol, and atoll need not affect the value of the integer expression errno on an error. If the value of the result cannot be represented, the behavior is undefined. +
Synopsis
@@ -15404,6 +15863,7 @@ If a length modifier appears with any conversion specifier other than as specifi The atof function returns the converted value.
Forward references: the strtod, strtof, and strtold functions (7.20.1.3). +
Synopsis
@@ -15430,6 +15890,7 @@ If a length modifier appears with any conversion specifier other than as specifi (7.20.1.4). +
Synopsis
@@ -15542,6 +16003,7 @@ If a length modifier appears with any conversion specifier other than as specifi to the same internal floating value, but if not will round to adjacent values. +
Synopsis
@@ -15618,8 +16080,10 @@ If a length modifier appears with any conversion specifier other than as specifi and sign of the value, if any), and the value of the macro ERANGE is stored in errno. +
Synopsis
@@ -15640,6 +16104,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The value of the RAND_MAX macro shall be at least 32767. +
Synopsis
@@ -15676,6 +16141,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
The order and contiguity of storage allocated by successive calls to the calloc, @@ -15690,6 +16156,7 @@ If a length modifier appears with any conversion specifier other than as specifi defined: either a null pointer is returned, or the behavior is as if the size were some nonzero value, except that the returned pointer shall not be used to access an object. +
Synopsis
@@ -15710,6 +16177,7 @@ If a length modifier appears with any conversion specifier other than as specifi constant. +
Synopsis
@@ -15731,6 +16199,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The free function returns no value. +
Synopsis
@@ -15746,6 +16215,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The malloc function returns either a null pointer or a pointer to the allocated space. +
Synopsis
@@ -15773,8 +16243,10 @@ If a length modifier appears with any conversion specifier other than as specifi allocated. +
Synopsis
@@ -15794,6 +16266,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The abort function does not return to its caller. +
Synopsis
@@ -15813,6 +16286,7 @@ If a length modifier appears with any conversion specifier other than as specifi The atexit function returns zero if the registration succeeds, nonzero if it fails.
Forward references: the exit function (7.20.4.3). +
Synopsis
@@ -15849,6 +16323,7 @@ If a length modifier appears with any conversion specifier other than as specifi other registered functions. +
Synopsis
@@ -15873,6 +16348,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -15894,6 +16370,7 @@ If a length modifier appears with any conversion specifier other than as specifi overwritten by a subsequent call to the getenv function. If the specified name cannot be found, a null pointer is returned. +
Synopsis
@@ -15915,6 +16392,7 @@ If a length modifier appears with any conversion specifier other than as specifi function does return, it returns an implementation-defined value. +
These utilities make use of a comparison function to search or sort arrays of unspecified @@ -15953,6 +16431,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -15987,6 +16466,7 @@ If a length modifier appears with any conversion specifier other than as specifi
264) In practice, the entire array is sorted according to the comparison function. +
Synopsis
@@ -16016,8 +16496,10 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -16039,6 +16521,7 @@ If a length modifier appears with any conversion specifier other than as specifi
265) The absolute value of the most negative number cannot be represented in two's complement. +
Synopsis
@@ -16065,6 +16548,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
The behavior of the multibyte character functions is affected by the LC_CTYPE category @@ -16081,6 +16565,7 @@ If a length modifier appears with any conversion specifier other than as specifi character codes, but are grouped with an adjacent multibyte character. +
Synopsis
@@ -16113,6 +16598,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -16145,6 +16631,7 @@ If a length modifier appears with any conversion specifier other than as specifi In no case will the value returned be greater than n or the value of the MB_CUR_MAX macro. +
Synopsis
@@ -16174,11 +16661,13 @@ If a length modifier appears with any conversion specifier other than as specifi
In no case will the value returned be greater than the value of the MB_CUR_MAX macro. +
The behavior of the multibyte string functions is affected by the LC_CTYPE category of the current locale. +
Synopsis
@@ -16215,6 +16704,7 @@ If a length modifier appears with any conversion specifier other than as specifi
267) The array will not be null-terminated if the value returned is n. +
Synopsis
@@ -16243,8 +16733,10 @@ If a length modifier appears with any conversion specifier other than as specifi any.267) +
The header <string.h> declares one type and several functions, and defines one @@ -16270,8 +16762,10 @@ If a length modifier appears with any conversion specifier other than as specifi
268) See ''future library directions'' (7.26.11). +
Synopsis
@@ -16295,6 +16789,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -16313,6 +16808,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The memmove function returns the value of s1. +
Synopsis
@@ -16330,6 +16826,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The strcpy function returns the value of s1. +
Synopsis
@@ -16358,8 +16855,10 @@ If a length modifier appears with any conversion specifier other than as specifi not be null-terminated. +
Synopsis
@@ -16378,6 +16877,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The strcat function returns the value of s1. +
Synopsis
@@ -16406,6 +16906,7 @@ If a length modifier appears with any conversion specifier other than as specifi strlen(s1)+n+1. +
The sign of a nonzero value returned by the comparison functions memcmp, strcmp, @@ -16413,6 +16914,7 @@ If a length modifier appears with any conversion specifier other than as specifi pair of characters (both interpreted as unsigned char) that differ in the objects being compared. +
Synopsis
@@ -16436,6 +16938,7 @@ If a length modifier appears with any conversion specifier other than as specifi comparison. +
Synopsis
@@ -16455,6 +16958,7 @@ If a length modifier appears with any conversion specifier other than as specifi pointed to by s2. +
Synopsis
@@ -16472,6 +16976,7 @@ If a length modifier appears with any conversion specifier other than as specifi accordingly as the string pointed to by s1 is greater than, equal to, or less than the string pointed to by s2 when both are interpreted as appropriate to the current locale. +
Synopsis
@@ -16490,6 +16995,7 @@ If a length modifier appears with any conversion specifier other than as specifi accordingly as the possibly null-terminated array pointed to by s1 is greater than, equal to, or less than the possibly null-terminated array pointed to by s2. +
Synopsis
@@ -16523,8 +17029,10 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -16542,6 +17050,7 @@ If a length modifier appears with any conversion specifier other than as specifi The memchr function returns a pointer to the located character, or a null pointer if the character does not occur in the object. +
Synopsis
@@ -16560,6 +17069,7 @@ If a length modifier appears with any conversion specifier other than as specifi character does not occur in the string. +
Synopsis
@@ -16576,6 +17086,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The strcspn function returns the length of the segment. +
Synopsis
@@ -16592,6 +17103,7 @@ If a length modifier appears with any conversion specifier other than as specifi The strpbrk function returns a pointer to the character, or a null pointer if no character from s2 occurs in s1. +
Synopsis
@@ -16610,6 +17122,7 @@ If a length modifier appears with any conversion specifier other than as specifi occur in the string. +
Synopsis
@@ -16625,6 +17138,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The strspn function returns the length of the segment. +
Synopsis
@@ -16642,6 +17156,7 @@ If a length modifier appears with any conversion specifier other than as specifi The strstr function returns a pointer to the located string, or a null pointer if the string is not found. If s2 points to a string with zero length, the function returns s1. +
Synopsis
@@ -16692,8 +17207,10 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -16710,6 +17227,7 @@ If a length modifier appears with any conversion specifier other than as specifi The memset function returns the value of s. +
Synopsis
@@ -16730,6 +17248,7 @@ If a length modifier appears with any conversion specifier other than as specifi specific. The array pointed to shall not be modified by the program, but may be overwritten by a subsequent call to the strerror function. +
Synopsis
@@ -16746,6 +17265,7 @@ If a length modifier appears with any conversion specifier other than as specifi character. +
The header <tgmath.h> includes the headers <math.h> and <complex.h> and @@ -16878,8 +17398,10 @@ If a length modifier appears with any conversion specifier other than as specifi the behavior is undefined. +
The header <time.h> defines two macros, and declares several types and functions for @@ -16936,8 +17458,10 @@ If a length modifier appears with any conversion specifier other than as specifi
274) The range [0, 60] for tm_sec allows for a positive leap second. +
Synopsis
@@ -16962,6 +17486,7 @@ If a length modifier appears with any conversion specifier other than as specifi the program and its return value subtracted from the value returned by subsequent calls. +
Synopsis
@@ -16982,6 +17507,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -17042,6 +17568,7 @@ If a length modifier appears with any conversion specifier other than as specifi causes it to attempt to determine whether Daylight Saving Time is in effect for the specified time. +
Synopsis
@@ -17060,6 +17587,7 @@ If a length modifier appears with any conversion specifier other than as specifi available. If timer is not a null pointer, the return value is also assigned to the object it points to. +
Except for the strftime function, these functions each return a pointer to one of two @@ -17069,6 +17597,7 @@ If a length modifier appears with any conversion specifier other than as specifi previous call to any of them. The implementation shall behave as if no other library functions call these functions. +
Synopsis
@@ -17109,6 +17638,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The asctime function returns a pointer to the string. +
Synopsis
@@ -17130,6 +17660,7 @@ If a length modifier appears with any conversion specifier other than as specifi
Forward references: the localtime function (7.23.3.4). +
Synopsis
@@ -17146,6 +17677,7 @@ If a length modifier appears with any conversion specifier other than as specifi The gmtime function returns a pointer to the broken-down time, or a null pointer if the specified time cannot be converted to UTC. +
Synopsis
@@ -17162,6 +17694,7 @@ If a length modifier appears with any conversion specifier other than as specifi The localtime function returns a pointer to the broken-down time, or a null pointer if the specified time cannot be converted to local time. +
Synopsis
@@ -17321,8 +17854,10 @@ If a length modifier appears with any conversion specifier other than as specifi zero is returned and the contents of the array are indeterminate. +
The header <wchar.h> declares four data types, one tag, four macros, and many @@ -17384,6 +17919,7 @@ If a length modifier appears with any conversion specifier other than as specifi
279) The value of the macro WEOF may differ from that of EOF and need not be negative. +
The formatted wide character input/output functions shall behave as if there is a sequence @@ -17393,6 +17929,7 @@ If a length modifier appears with any conversion specifier other than as specifi
280) The fwprintf functions perform writes to memory for the %n specifier. +
Synopsis
@@ -17707,6 +18244,7 @@ If a length modifier appears with any conversion specifier other than as specifi the case of fixed-point conversion by the source value as well. +
Synopsis
@@ -17967,6 +18505,7 @@ If a length modifier appears with any conversion specifier other than as specifi
290) See ''future library directions'' (7.26.12). +
Synopsis
@@ -17988,6 +18527,7 @@ If a length modifier appears with any conversion specifier other than as specifi counting the terminating null wide character, or a negative value if an encoding error occurred or if n or more wide characters were requested to be written. +
Synopsis
@@ -18010,6 +18550,7 @@ If a length modifier appears with any conversion specifier other than as specifi early matching failure. +
Synopsis
@@ -18060,6 +18601,7 @@ If a length modifier appears with any conversion specifier other than as specifi invoke the va_arg macro, the value of arg after the return is indeterminate. +
Synopsis
@@ -18084,6 +18626,7 @@ If a length modifier appears with any conversion specifier other than as specifi items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure. +
Synopsis
@@ -18108,6 +18651,7 @@ If a length modifier appears with any conversion specifier other than as specifi occurred or if n or more wide characters were requested to be generated. +
Synopsis
@@ -18131,6 +18675,7 @@ If a length modifier appears with any conversion specifier other than as specifi items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure. +
Synopsis
@@ -18152,6 +18697,7 @@ If a length modifier appears with any conversion specifier other than as specifi value if an output or encoding error occurred. +
Synopsis
@@ -18174,6 +18720,7 @@ If a length modifier appears with any conversion specifier other than as specifi items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure. +
Synopsis
@@ -18190,6 +18737,7 @@ If a length modifier appears with any conversion specifier other than as specifi The wprintf function returns the number of wide characters transmitted, or a negative value if an output or encoding error occurred. +
Synopsis
@@ -18209,8 +18757,10 @@ If a length modifier appears with any conversion specifier other than as specifi items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure. +
Synopsis
@@ -18239,6 +18789,7 @@ If a length modifier appears with any conversion specifier other than as specifi Also, errno will be set to EILSEQ by input/output functions only if an encoding error occurs. +
Synopsis
@@ -18265,6 +18816,7 @@ If a length modifier appears with any conversion specifier other than as specifi null pointer is returned. If a read or encoding error occurs during the operation, the array contents are indeterminate and a null pointer is returned. +
Synopsis
@@ -18286,6 +18838,7 @@ If a length modifier appears with any conversion specifier other than as specifi error indicator for the stream is set and fputwc returns WEOF. If an encoding error occurs, the value of the macro EILSEQ is stored in errno and fputwc returns WEOF. +
Synopsis
@@ -18305,6 +18858,7 @@ If a length modifier appears with any conversion specifier other than as specifi returns a nonnegative value. +
Synopsis
@@ -18329,6 +18883,7 @@ If a length modifier appears with any conversion specifier other than as specifi
293) If the orientation of the stream has already been determined, fwide does not change it. +
Synopsis
@@ -18347,6 +18902,7 @@ If a length modifier appears with any conversion specifier other than as specifi The getwc function returns the next wide character from the input stream pointed to by stream, or WEOF. +
Synopsis
@@ -18367,6 +18923,7 @@ If a length modifier appears with any conversion specifier other than as specifi The getwchar function returns the next wide character from the input stream pointed to by stdin, or WEOF. +
Synopsis
@@ -18384,6 +18941,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The putwc function returns the wide character written, or WEOF. +
Synopsis
@@ -18398,6 +18956,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The putwchar function returns the character written, or WEOF. +
Synopsis
@@ -18436,6 +18995,7 @@ If a length modifier appears with any conversion specifier other than as specifi The ungetwc function returns the wide character pushed back, or WEOF if the operation fails. +
The header <wchar.h> declares a number of functions useful for wide string @@ -18452,8 +19012,10 @@ If a length modifier appears with any conversion specifier other than as specifi zero wide characters. +
Synopsis
@@ -18578,6 +19140,7 @@ If a length modifier appears with any conversion specifier other than as specifi to the same internal floating value, but if not will round to adjacent values. +
Synopsis
@@ -18653,8 +19216,10 @@ If a length modifier appears with any conversion specifier other than as specifi LLONG_MAX, ULONG_MAX, or ULLONG_MAX is returned (according to the return type sign of the value, if any), and the value of the macro ERANGE is stored in errno. +
Synopsis
@@ -18672,6 +19237,7 @@ If a length modifier appears with any conversion specifier other than as specifi The wcscpy function returns the value of s1. +
Synopsis
@@ -18699,6 +19265,7 @@ If a length modifier appears with any conversion specifier other than as specifi result will not be null-terminated. +
Synopsis
@@ -18721,6 +19288,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -18740,8 +19308,10 @@ If a length modifier appears with any conversion specifier other than as specifi
The wmemmove function returns the value of s1. +
Synopsis
@@ -18759,6 +19329,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The wcscat function returns the value of s1. +
Synopsis
@@ -18785,12 +19356,14 @@ If a length modifier appears with any conversion specifier other than as specifi wcslen(s1)+n+1. +
Unless explicitly stated otherwise, the functions described in this subclause order two wide characters the same way as two integers of the underlying integer type designated by wchar_t. +
Synopsis
@@ -18808,6 +19381,7 @@ If a length modifier appears with any conversion specifier other than as specifi accordingly as the wide string pointed to by s1 is greater than, equal to, or less than the wide string pointed to by s2. +
Synopsis
@@ -18830,6 +19404,7 @@ If a length modifier appears with any conversion specifier other than as specifi wide string pointed to by s2 when both are interpreted as appropriate to the current locale. +
Synopsis
@@ -18849,6 +19424,7 @@ If a length modifier appears with any conversion specifier other than as specifi accordingly as the possibly null-terminated array pointed to by s1 is greater than, equal to, or less than the possibly null-terminated array pointed to by s2. +
Synopsis
@@ -18881,6 +19457,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -18899,8 +19476,10 @@ If a length modifier appears with any conversion specifier other than as specifi accordingly as the object pointed to by s1 is greater than, equal to, or less than the object pointed to by s2. +
Synopsis
@@ -18917,6 +19496,7 @@ If a length modifier appears with any conversion specifier other than as specifi The wcschr function returns a pointer to the located wide character, or a null pointer if the wide character does not occur in the wide string. +
Synopsis
@@ -18934,6 +19514,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The wcscspn function returns the length of the segment. +
Synopsis
@@ -18950,6 +19531,7 @@ If a length modifier appears with any conversion specifier other than as specifi The wcspbrk function returns a pointer to the wide character in s1, or a null pointer if no wide character from s2 occurs in s1. +
Synopsis
@@ -18966,6 +19548,7 @@ If a length modifier appears with any conversion specifier other than as specifi The wcsrchr function returns a pointer to the wide character, or a null pointer if c does not occur in the wide string. +
Synopsis
@@ -18983,6 +19566,7 @@ If a length modifier appears with any conversion specifier other than as specifi The wcsspn function returns the length of the segment. +
Synopsis
@@ -19001,6 +19585,7 @@ If a length modifier appears with any conversion specifier other than as specifi wide string is not found. If s2 points to a wide string with zero length, the function returns s1. +
Synopsis
@@ -19060,6 +19645,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Synopsis
@@ -19078,8 +19664,10 @@ If a length modifier appears with any conversion specifier other than as specifi the wide character does not occur in the object. +
Synopsis
@@ -19095,6 +19683,7 @@ If a length modifier appears with any conversion specifier other than as specifi The wcslen function returns the number of wide characters that precede the terminating null wide character. +
Synopsis
@@ -19110,8 +19699,10 @@ If a length modifier appears with any conversion specifier other than as specifi
The wmemset function returns the value of s. +
Synopsis
@@ -19143,6 +19734,7 @@ If a length modifier appears with any conversion specifier other than as specifi wide character. Otherwise, zero is returned and the contents of the array are indeterminate. +
The header <wchar.h> declares an extended set of functions useful for conversion @@ -19180,8 +19772,10 @@ If a length modifier appears with any conversion specifier other than as specifi character string. +
Synopsis
@@ -19200,6 +19794,7 @@ If a length modifier appears with any conversion specifier other than as specifi does not constitute a valid single-byte character in the initial shift state. Otherwise, it returns the wide character representation of that character. +
Synopsis
@@ -19219,8 +19814,10 @@ If a length modifier appears with any conversion specifier other than as specifi length one in the initial shift state. Otherwise, it returns the single-byte representation of that character as an unsigned char converted to an int. +
Synopsis
@@ -19238,6 +19835,7 @@ If a length modifier appears with any conversion specifier other than as specifi The mbsinit function returns nonzero if ps is a null pointer or if the pointed-to object describes an initial conversion state; otherwise, it returns zero. +
These functions differ from the corresponding multibyte character functions of 7.20.7 @@ -19251,6 +19849,7 @@ If a length modifier appears with any conversion specifier other than as specifi Also unlike their corresponding functions, the return value does not represent whether the encoding is state-dependent. +
Synopsis
@@ -19275,6 +19874,7 @@ If a length modifier appears with any conversion specifier other than as specifi
Forward references: the mbrtowc function (7.24.6.3.2). +
Synopsis
@@ -19325,6 +19925,7 @@ If a length modifier appears with any conversion specifier other than as specifi sequence of redundant shift sequences (for implementations with state-dependent encodings). +
Synopsis
@@ -19355,6 +19956,7 @@ If a length modifier appears with any conversion specifier other than as specifi the function stores the value of the macro EILSEQ in errno and returns (size_t)(-1); the conversion state is unspecified. +
These functions differ from the corresponding multibyte string functions of 7.20.8 @@ -19371,6 +19973,7 @@ If a length modifier appears with any conversion specifier other than as specifi to reflect the amount of the source processed by that invocation. +
Synopsis
@@ -19415,6 +20018,7 @@ If a length modifier appears with any conversion specifier other than as specifi
301) Thus, the value of len is ignored if dst is a null pointer. +
Synopsis
@@ -19461,8 +20065,10 @@ If a length modifier appears with any conversion specifier other than as specifi include those necessary to reach the initial shift state immediately before the null byte. +
The header <wctype.h> declares three data types, one macro, and many functions.303) @@ -19509,6 +20115,7 @@ If a length modifier appears with any conversion specifier other than as specifi
303) See ''future library directions'' (7.26.13). +
The header <wctype.h> declares several functions useful for classifying wide @@ -19519,6 +20126,7 @@ If a length modifier appears with any conversion specifier other than as specifi term control wide character refers to a member of a locale-specific set of wide characters that are not printing wide characters. +
The functions in this subclause return nonzero (true) if and only if the value of the @@ -19538,6 +20146,7 @@ If a length modifier appears with any conversion specifier other than as specifi && iswspace(wc) is true, but not both. +
Synopsis
@@ -19550,6 +20159,7 @@ If a length modifier appears with any conversion specifier other than as specifi The iswalnum function tests for any wide character for which iswalpha or iswdigit is true. +
Synopsis
@@ -19571,6 +20181,7 @@ If a length modifier appears with any conversion specifier other than as specifi wide characters; all four combinations are possible. +
Synopsis
@@ -19586,6 +20197,7 @@ If a length modifier appears with any conversion specifier other than as specifi characters are the following: space (L' '), and horizontal tab (L'\t'). In the "C" locale, iswblank returns true only for the standard blank characters. +
Synopsis
@@ -19597,6 +20209,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The iswcntrl function tests for any control wide character. +
Synopsis
@@ -19609,6 +20222,7 @@ If a length modifier appears with any conversion specifier other than as specifi The iswdigit function tests for any wide character that corresponds to a decimal-digit character (as defined in 5.2.1). +
Synopsis
@@ -19632,6 +20246,7 @@ If a length modifier appears with any conversion specifier other than as specifi characters other than ' '. +
Synopsis
@@ -19645,6 +20260,7 @@ If a length modifier appears with any conversion specifier other than as specifi letter or is one of a locale-specific set of wide characters for which none of iswcntrl, iswdigit, iswpunct, or iswspace is true. +
Synopsis
@@ -19656,6 +20272,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The iswprint function tests for any printing wide character. +
Synopsis
@@ -19669,6 +20286,7 @@ If a length modifier appears with any conversion specifier other than as specifi specific set of punctuation wide characters for which neither iswspace nor iswalnum is true.306) +
Synopsis
@@ -19686,6 +20304,7 @@ If a length modifier appears with any conversion specifier other than as specifi set of white-space wide characters for which none of iswalnum, iswgraph, or iswpunct is true. +
Synopsis
@@ -19699,6 +20318,7 @@ If a length modifier appears with any conversion specifier other than as specifi letter or is one of a locale-specific set of wide characters for which none of iswcntrl, iswdigit, iswpunct, or iswspace is true. +
Synopsis
@@ -19711,12 +20331,14 @@ If a length modifier appears with any conversion specifier other than as specifi The iswxdigit function tests for any wide character that corresponds to a hexadecimal-digit character (as defined in 6.4.4.1). +
The functions wctype and iswctype provide extensible wide character classification as well as testing equivalent to that performed by the functions described in the previous subclause (7.25.2.1). +
Synopsis
@@ -19753,6 +20375,7 @@ If a length modifier appears with any conversion specifier other than as specifi character wc has the property described by desc.
Forward references: the wctype function (7.25.2.2.2). +
Synopsis
@@ -19774,12 +20397,15 @@ If a length modifier appears with any conversion specifier other than as specifi as the second argument to the iswctype function; otherwise, it returns zero. * +
The header <wctype.h> declares several functions useful for mapping wide characters. +
Synopsis
@@ -19798,6 +20424,7 @@ If a length modifier appears with any conversion specifier other than as specifi characters (always the same one for any given locale); otherwise, the argument is returned unchanged. +
Synopsis
@@ -19816,6 +20443,7 @@ If a length modifier appears with any conversion specifier other than as specifi characters (always the same one for any given locale); otherwise, the argument is returned unchanged. +
The functions wctrans and towctrans provide extensible wide character mapping as @@ -19823,6 +20451,7 @@ If a length modifier appears with any conversion specifier other than as specifi previous subclause (7.25.3.1). +
Synopsis
@@ -19847,6 +20476,7 @@ If a length modifier appears with any conversion specifier other than as specifi The towctrans function returns the mapped value of wc using the mapping described by desc. +
Synopsis
@@ -19868,11 +20498,13 @@ If a length modifier appears with any conversion specifier other than as specifi as the second argument to the towctrans function; otherwise, it returns zero. +
The following names are grouped under individual headers for convenience. All external names described below are reserved no matter what headers are included by the program. +
The function names @@ -19884,36 +20516,43 @@ If a length modifier appears with any conversion specifier other than as specifi and the same names suffixed with f or l may be added to the declarations in the <complex.h> header. +
Function names that begin with either is or to, and a lowercase letter may be added to the declarations in the <ctype.h> header. +
Macros that begin with E and a digit or E and an uppercase letter may be added to the declarations in the <errno.h> header. +
Macro names beginning with PRI or SCN followed by any lowercase letter or X may be added to the macros defined in the <inttypes.h> header. +
Macros that begin with LC_ and an uppercase letter may be added to the definitions in the <locale.h> header. +
Macros that begin with either SIG and an uppercase letter or SIG_ and an uppercase letter may be added to the definitions in the <signal.h> header. +
The ability to undefine and perhaps then redefine the macros bool, true, and false is an obsolescent feature. +
Typedef names beginning with int or uint and ending with _t may be added to the @@ -19922,6 +20561,7 @@ If a length modifier appears with any conversion specifier other than as specifi <stdint.h> header. +
Lowercase letters may be added to the conversion specifiers and length modifiers in @@ -19932,16 +20572,19 @@ If a length modifier appears with any conversion specifier other than as specifi The use of ungetc on a binary stream where the file position indicator is zero prior to the call is an obsolescent feature. +
Function names that begin with str and a lowercase letter may be added to the declarations in the <stdlib.h> header. +
Function names that begin with str, mem, or wcs and a lowercase letter may be added to the declarations in the <string.h> header. +
Function names that begin with wcs and a lowercase letter may be added to the @@ -19950,6 +20593,7 @@ If a length modifier appears with any conversion specifier other than as specifi Lowercase letters may be added to the conversion specifiers and length modifiers in fwprintf and fwscanf. Other characters may be used in extensions. +
@@ -19957,6 +20601,7 @@ If a length modifier appears with any conversion specifier other than as specifi declarations in the <wctype.h> header. +
(informative) @@ -19966,8 +20611,10 @@ If a length modifier appears with any conversion specifier other than as specifi NOTE The notation is described in 6.1. ++A.1 Lexical grammar
+A.1.1 Lexical elements
(6.4) token:@@ -19988,6 +20635,7 @@ If a length modifier appears with any conversion specifier other than as specifi each non-white-space character that cannot be one of the above+A.1.2 Keywords
(6.4.1) keyword: one of @@ -20004,6 +20652,7 @@ If a length modifier appears with any conversion specifier other than as specifi else register union
@@ -20029,6 +20678,7 @@ If a length modifier appears with any conversion specifier other than as specifi 0 1 2 3 4 5 6 7 8 9+
@@ -20041,6 +20691,7 @@ If a length modifier appears with any conversion specifier other than as specifi hexadecimal-digit hexadecimal-digit+
@@ -20210,6 +20861,7 @@ If a length modifier appears with any conversion specifier other than as specifi hexadecimal-escape-sequence hexadecimal-digit+
@@ -20229,6 +20881,7 @@ If a length modifier appears with any conversion specifier other than as specifi escape-sequence+
@@ -20241,6 +20894,7 @@ If a length modifier appears with any conversion specifier other than as specifi <: :> <% %> %: %:%:+
@@ -20268,6 +20922,7 @@ If a length modifier appears with any conversion specifier other than as specifi the new-line character and "+
@@ -20412,6 +21069,7 @@ If a length modifier appears with any conversion specifier other than as specifi conditional-expression+
@@ -20619,6 +21277,7 @@ If a length modifier appears with any conversion specifier other than as specifi . identifier+
@@ -20675,6 +21334,7 @@ If a length modifier appears with any conversion specifier other than as specifi return expressionopt ;+
@@ -20696,6 +21356,7 @@ If a length modifier appears with any conversion specifier other than as specifi declaration-list declaration+
@@ -20784,18 +21445,21 @@ If a length modifier appears with any conversion specifier other than as specifi the new-line character+
(informative) Library summary+
NDEBUG void assert(scalar expression);+
int isalnum(int c); @@ -20890,11 +21555,13 @@ If a length modifier appears with any conversion specifier other than as specifi int toupper(int c);+
EDOM EILSEQ ERANGE errno+
@@ -20918,6 +21585,7 @@ If a length modifier appears with any conversion specifier other than as specifi int feupdateenv(const fenv_t *envp);+
FLT_ROUNDS DBL_MIN_EXP FLT_MAX @@ -20933,6 +21601,7 @@ If a length modifier appears with any conversion specifier other than as specifi FLT_MIN_EXP LDBL_MAX_10_EXP+
@@ -20960,6 +21629,7 @@ If a length modifier appears with any conversion specifier other than as specifi wchar_t ** restrict endptr, int base);+
and bitor not_eq xor @@ -20967,6 +21637,7 @@ If a length modifier appears with any conversion specifier other than as specifi bitand not or_eq+
CHAR_BIT CHAR_MAX INT_MIN ULONG_MAX @@ -20976,6 +21647,7 @@ If a length modifier appears with any conversion specifier other than as specifi CHAR_MIN USHRT_MAX LONG_MAX+
struct lconv LC_ALL LC_CTYPE LC_NUMERIC @@ -20984,6 +21656,7 @@ If a length modifier appears with any conversion specifier other than as specifi struct lconv *localeconv(void);+
jmp_buf @@ -21193,6 +21867,7 @@ If a length modifier appears with any conversion specifier other than as specifi void longjmp(jmp_buf env, int val);+
sig_atomic_t SIG_IGN SIGILL SIGTERM @@ -21202,6 +21877,7 @@ If a length modifier appears with any conversion specifier other than as specifi int raise(int sig);+
va_list @@ -21211,6 +21887,7 @@ If a length modifier appears with any conversion specifier other than as specifi void va_start(va_list ap, parmN);+
@@ -21220,12 +21897,14 @@ If a length modifier appears with any conversion specifier other than as specifi __bool_true_false_are_defined+
ptrdiff_t size_t wchar_t NULL offsetof(type, member-designator)+
intN_t INT_LEASTN_MIN PTRDIFF_MAX @@ -21243,6 +21922,7 @@ If a length modifier appears with any conversion specifier other than as specifi UINTN_MAX PTRDIFF_MIN+
@@ -21420,6 +22102,7 @@ If a length modifier appears with any conversion specifier other than as specifi size_t strlen(const char *s);+
acos sqrt fmod nextafter @@ -21439,6 +22122,7 @@ If a length modifier appears with any conversion specifier other than as specifi pow fmin nearbyint creal+
@@ -21458,6 +22142,7 @@ If a length modifier appears with any conversion specifier other than as specifi const struct tm * restrict timeptr);+
(informative) @@ -21618,6 +22305,7 @@ If a length modifier appears with any conversion specifier other than as specifi +Annex D
(normative) @@ -21630,101 +22318,70 @@ If a length modifier appears with any conversion specifier other than as specifi This table is reproduced unchanged from ISO/IEC TR 10176:1998, produced by ISO/IEC JTC 1/SC 22/WG 20, except for the omission of ranges that are part of the basic character sets. - Latin: 00AA, 00BA, 00C0-00D6, 00D8-00F6, 00F8-01F5, 01FA-0217, -+
Latin: | 00AA, 00BA, 00C0-00D6, 00D8-00F6, 00F8-01F5, 01FA-0217,
0250-02A8, 1E00-1E9B, 1EA0-1EF9, 207F
-
- Greek: 0386, 0388-038A, 038C, 038E-03A1, 03A3-03CE, 03D0-03D6,
-+ |
(informative) @@ -21816,12 +22473,14 @@ If a length modifier appears with any conversion specifier other than as specifi #define LDBL_MIN 1E-37+
(normative) IEC 60559 floating-point arithmetic+
This annex specifies C language support for the IEC 60559 floating-point standard. The @@ -21836,6 +22495,7 @@ If a length modifier appears with any conversion specifier other than as specifi a binding between the C language and IEC 60559 is indicated, the IEC 60559-specified behavior is adopted by reference, unless stated otherwise. +
The C floating types match the IEC 60559 formats as follows: @@ -21864,6 +22524,7 @@ If a length modifier appears with any conversion specifier other than as specifi all double values. +
This specification does not define the behavior of signaling NaNs.309) It generally uses @@ -21875,6 +22536,7 @@ If a length modifier appears with any conversion specifier other than as specifi sufficient for closure of the arithmetic. +
C operators and functions provide IEC 60559 required and recommended facilities as @@ -21953,6 +22615,7 @@ If a length modifier appears with any conversion specifier other than as specifi macros defined in 7.12.3 do not distinguish signaling from quiet NaNs). +
If the floating value is infinite or NaN or if the integral part of the floating value exceeds @@ -21969,6 +22632,7 @@ If a length modifier appears with any conversion specifier other than as specifi <math.h>. +
Conversion from the widest supported IEC 60559 format to decimal with @@ -21997,6 +22661,7 @@ If a length modifier appears with any conversion specifier other than as specifi DBL_DIG are 18 and 15, respectively, for these formats.) +
A contracted expression treats infinities, NaNs, signed zeros, subnormals, and the @@ -22008,6 +22673,7 @@ If a length modifier appears with any conversion specifier other than as specifi consistent with the basic arithmetic operations. A contracted expression should deliver the same value as its uncontracted counterpart, else should be correctly rounded (once). +
The floating-point environment defined in <fenv.h> includes the IEC 60559 floating- @@ -22019,6 +22685,7 @@ If a length modifier appears with any conversion specifier other than as specifi
312) This specification does not require dynamic rounding precision nor trap enablement modes. +
IEC 60559 requires that floating-point operations implicitly raise floating-point exception @@ -22033,6 +22700,7 @@ If a length modifier appears with any conversion specifier other than as specifi which allows certain optimizations (see F.8). +
During translation the IEC 60559 default modes are in effect: @@ -22059,6 +22727,7 @@ If a length modifier appears with any conversion specifier other than as specifi strtod, provide execution-time conversion of numeric strings. +
At program startup the floating-point environment is initialized as prescribed by @@ -22071,6 +22740,7 @@ If a length modifier appears with any conversion specifier other than as specifi
An arithmetic constant expression of floating type, other than one in an initializer for an @@ -22112,6 +22782,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
All computation for automatic initialization is done (as if) at execution time; thus, it is @@ -22160,6 +22831,7 @@ If a length modifier appears with any conversion specifier other than as specifi could be done at translation time, regardless of the expression evaluation method. +
Operations defined in 6.5 and functions and macros defined for the standard libraries @@ -22172,11 +22844,13 @@ If a length modifier appears with any conversion specifier other than as specifi ''inexact'', or ''underflow'' and ''inexact''), then ''overflow'' or ''underflow'' is raised before ''inexact''. +
This section identifies code transformations that might subvert IEC 60559-specified behavior, and others that do not. +
Floating-point arithmetic operations and external function calls may entail side effects @@ -22212,63 +22886,42 @@ If a length modifier appears with any conversion specifier other than as specifi if (0 < n) x + 1; +
- x / 2 <-> x * 0.5 Although similar transformations involving inexact -
+
x / 2 <-> 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 and x / 1 -> x The expressions 1 * x, x / 1, and x are equivalent
-+ |
Footnotes
317) Strict support for signaling NaNs -- not required by this specification -- would invalidate these and @@ -22288,12 +22941,13 @@ If a length modifier appears with any conversion specifier other than as specifi for complex z. +
- x != x -> false The statement x != x is true if x is a NaN. - x == x -> true The statement x == x is false if x is a NaN. - x < y -> isless(x,y) (and similarly for <=, >, >=) Though numerically -
+
x != x -> false | The statement x != x is true if x is a NaN. + |
x == x -> true | The statement 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, @@ -22301,7 +22955,7 @@ If a length modifier appears with any conversion specifier other than as specifi cause the ''invalid'' floating-point exception for unordered cases, could be performed provided the state of the FENV_ACCESS pragma is ''off''. - + |
@@ -22347,6 +23001,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
The implementation shall honor floating-point exceptions raised by execution-time @@ -22362,6 +23017,7 @@ If a length modifier appears with any conversion specifier other than as specifi
319) 0 - 0 yields -0 instead of +0 just when the rounding direction is downward. +
This subclause contains specifications of <math.h> facilities that are particularly suited @@ -22425,8 +23081,10 @@ If a length modifier appears with any conversion specifier other than as specifi avoiding them would be too costly. +
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. +
On a binary system, ldexp(x, exp) is equivalent to scalbn(x, exp). +
sqrt is fully specified as a basic arithmetic operation in IEC 60559. +
See the sample implementation for ceil in F.9.6.1. +
The nearbyint functions use IEC 60559 rounding according to the current rounding @@ -22823,11 +23523,13 @@ If a length modifier appears with any conversion specifier other than as specifi
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. +
The lrint and llrint functions provide floating-to-integer conversion as prescribed @@ -22838,6 +23540,7 @@ If a length modifier appears with any conversion specifier other than as specifi exception. +
The lround and llround functions differ from the lrint and llrint functions @@ -22874,6 +23578,7 @@ If a length modifier appears with any conversion specifier other than as specifi 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. +
The trunc functions use IEC 60559 rounding toward zero (regardless of the current @@ -22884,8 +23589,10 @@ If a length modifier appears with any conversion specifier other than as specifi
The remainder functions are fully specified as a basic arithmetic operation in IEC 60559. +
The remquo functions follow the specifications for the remainder functions. They have no further specifications special to IEC 60559 implementations. +
copysign is specified in the Appendix to IEC 60559. +
All IEC 60559 implementations support quiet NaNs, in all floating formats. +
No additional requirements beyond those on nextafter. +
No additional requirements. +
If just one argument is a NaN, the fmax functions return the other argument (if both @@ -22965,12 +23682,15 @@ If a length modifier appears with any conversion specifier other than as specifi return +0; however, implementation in software might be impractical. +
The fmin functions are analogous to the fmax functions (see F.9.9.2). +
(informative) IEC 60559-compatible complex arithmetic+
This annex supplements annex F to specify complex arithmetic for compatibility with @@ -23003,6 +23725,7 @@ If a length modifier appears with any conversion specifier other than as specifi recommended practice. An implementation that defines __STDC_IEC_559_COMPLEX__ should conform to the specifications in this annex. +
There is a new keyword _Imaginary, which is used to specify imaginary types. It is @@ -23022,6 +23745,7 @@ If a length modifier appears with any conversion specifier other than as specifi
The imaginary type domain comprises the imaginary types. +
A complex or imaginary value with at least one infinite part is regarded as an infinity @@ -23030,13 +23754,16 @@ If a length modifier appears with any conversion specifier other than as specifi a zero if each of its parts is a zero. +
Conversions among imaginary types follow rules analogous to those for real floating types. +
When a value of imaginary type is converted to a real type other than _Bool,324) the @@ -23049,6 +23776,7 @@ If a length modifier appears with any conversion specifier other than as specifi
When a value of imaginary type is converted to a complex type, the real part of the @@ -23059,6 +23787,7 @@ If a length modifier appears with any conversion specifier other than as specifi complex value is discarded and the value of the imaginary part is converted according to the conversion rules for the corresponding real types. +
The following subclauses supplement 6.5 in order to specify the type of the result for an @@ -23076,6 +23805,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
Semantics
@@ -23257,6 +23987,7 @@ If a length modifier appears with any conversion specifier other than as specifi (at least where the state for CX_LIMITED_RANGE is ''off''). +
Semantics
@@ -23282,6 +24013,7 @@ If a length modifier appears with any conversion specifier other than as specifi x + iy (x (+-) u) + iy x + i(y (+-) v) (x (+-) u) + i(y (+-) v) +
The macros @@ -23309,7 +24041,7 @@ If a length modifier appears with any conversion specifier other than as specifi and the result, the result has the same sign as the argument.
The functions are continuous onto both sides of their branch cuts, taking into account the - sign of zero. For example, csqrt(-2 (+-) i0) = (+-)i(sqrt)2. ??? + sign of zero. For example, csqrt(-2 (+-) i0) = (+-)i(sqrt)(2).
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 @@ -23357,8 +24089,10 @@ If a length modifier appears with any conversion specifier other than as specifi other part is a NaN. +
The cpow functions raise floating-point exceptions if appropriate for the calculation of @@ -23578,6 +24324,7 @@ If a length modifier appears with any conversion specifier other than as specifi implementations that treat special cases more carefully. +
Type-generic macros that accept complex arguments also accept imaginary arguments. If @@ -23627,29 +24375,34 @@ If a length modifier appears with any conversion specifier other than as specifi atanh(iy) = i atan(y) +
(informative) Language independent arithmetic+
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 (annex F) in that it covers integer and diverse floating-point arithmetics. +
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 5.2.8). +
The LIA-1 data type Boolean is implemented by the C data type bool with values of true and false, all from <stdbool.h>. +
The signed C integer types int, long int, long long int, and the corresponding @@ -23661,19 +24414,21 @@ If a length modifier appears with any conversion specifier other than as specifi only integer divide-by-zero need be detected.
The parameters for the integer data types can be accessed by the following: - maxint INT_MAX, LONG_MAX, LLONG_MAX, UINT_MAX, ULONG_MAX,
+ maxint INT_MAX, LONG_MAX, LLONG_MAX, UINT_MAX, ULONG_MAX, ULLONG_MAX -minint INT_MIN, LONG_MIN, LLONG_MIN +
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. +
The integer operations on integer types are the following: +
addI x + y subI x - y mulI x * y @@ -23687,8 +24442,10 @@ If a length modifier appears with any conversion specifier other than as specifi leqI x <= y gtrI x > y geqI x >= y +where x and y are expressions of the same integer type. +
The C floating-point types float, double, and long double are compatible with @@ -23698,24 +24455,31 @@ If a length modifier appears with any conversion specifier other than as specifi operations (see annex F) along with IEC 60559 status flags and traps has LIA-1 conformant types. +
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 +
The derived constants for the floating point types are accessed by the following: +
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 ++
The floating-point operations on floating-point types are the following: +
addF x + y subF x - y mulF x * y @@ -23724,9 +24488,7 @@ If a length modifier appears with any conversion specifier other than as specifi 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), -where x and y are expressions of the same floating point type, n is of type int, and li is of type long int. +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 @@ -23735,37 +24497,40 @@ If a length modifier appears with any conversion specifier other than as specifi leqF x <= y gtrF x > y geqF x >= y +
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.
The FLT_ROUNDS parameter can be used to indicate the LIA-1 rounding styles: +
truncate FLT_ROUNDS == 0 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. +
The LIA-1 type conversions are the following type casts: - cvtI' -> I (int)i, (long int)i, (long long int)i,
+ 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 +
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), @@ -23790,6 +24555,7 @@ If a length modifier appears with any conversion specifier other than as specifi implementation uses round-to-nearest. +
Notification is the process by which a user or program is informed that an exceptional @@ -23797,6 +24563,7 @@ If a length modifier appears with any conversion specifier other than as specifi allows an implementation to cause a notification to occur when any arithmetic operation returns an exceptional value as defined in LIA-1 clause 5. +
LIA-1 requires at least the following two alternatives for handling of notifications: @@ -23817,20 +24584,25 @@ If a length modifier appears with any conversion specifier other than as specifi math library function calls. User-provided signal handlers for SIGFPE allow for trap- and-resume behavior with the same constraint. +
C's <fenv.h> status flags are compatible with the LIA-1 indicators.
The following mapping is for floating-point types: +
undefined FE_INVALID, FE_DIVBYZERO floating_overflow FE_OVERFLOW underflow FE_UNDERFLOW +
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.
C allows an implementation to provide the following LIA-1 required behavior: at @@ -23842,6 +24614,7 @@ If a length modifier appears with any conversion specifier other than as specifi This documentation makes that distinction because <fenv.h> covers only the floating- point indicators. +
C is compatible with LIA-1's trap requirements for arithmetic operations, but not for @@ -23860,6 +24633,7 @@ If a length modifier appears with any conversion specifier other than as specifi resume, at the programmer's option. +
(informative) @@ -23905,6 +24679,7 @@ If a length modifier appears with any conversion specifier other than as specifi +Annex J
(informative) @@ -23914,6 +24689,7 @@ If a length modifier appears with any conversion specifier other than as specifi This annex collects some information about portability that appears in this International Standard. +J.1 Unspecified behavior
The following are unspecified: @@ -24025,6 +24801,7 @@ If a length modifier appears with any conversion specifier other than as specifi G.6.2.3, G.6.2.4, G.6.2.5, G.6.2.6, G.6.3.1, G.6.4.2). +
J.2 Undefined behavior
The behavior is undefined in the following circumstances: @@ -24484,11 +25261,13 @@ If a length modifier appears with any conversion specifier other than as specifi +
J.3 Implementation-defined behavior
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: +
J.3.1 Translation
The following characteristics of a hosted environment are locale-specific and are required @@ -24795,6 +25587,7 @@ If a length modifier appears with any conversion specifier other than as specifi +
The following extensions are widely used in many systems, but are not portable to all @@ -24803,6 +25596,7 @@ If a length modifier appears with any conversion specifier other than as specifi extensions are new keywords, extra library functions declared in standard headers, or predefined macros with names that do not begin with an underscore. +
In a hosted environment, the main function receives a third argument, char *envp[], @@ -24810,26 +25604,31 @@ If a length modifier appears with any conversion specifier other than as specifi that provides information about the environment for this execution of the program (5.1.2.2.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 (6.4.2). +
All characters in identifiers (with or without external linkage) are significant (6.4.2). +
A function identifier, or the identifier of an object the declaration of which contains the keyword extern, has file scope (6.2.1). +
String literals are modifiable (in which case, identical string literals should denote distinct objects) (6.4.5). +
Additional arithmetic types, such as __int128 or double double, and their @@ -24838,6 +25637,7 @@ If a length modifier appears with any conversion specifier other than as specifi other floating types, and may be used to define float_t or double_t. +
A pointer to an object or to void may be cast to a pointer to a function, allowing data to @@ -24846,17 +25646,20 @@ If a length modifier appears with any conversion specifier other than as specifi 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) (6.5.4). +
A bit-field may be declared with a type other than _Bool, unsigned int, or signed int, with an appropriate maximum width (6.7.2.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 (6.7.4). +
The asm keyword may be used to insert assembly language directly into the translator @@ -24865,18 +25668,21 @@ If a length modifier appears with any conversion specifier other than as specifi asm ( character-string-literal ); +
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 (6.9.2). +
Macro names that do not begin with an underscore, describing the translation and execution environments, are defined by the implementation before translation begins (6.10.8). +
If any floating-point status flags are set on normal termination after all calls to functions @@ -24884,11 +25690,13 @@ If a length modifier appears with any conversion specifier other than as specifi writes some diagnostics indicating the fact to the stderr stream, if it is still open, +
Handlers for specific signals are called with extra arguments in addition to the signal number (7.14.1.1). +
Additional mappings from files to streams are supported (7.19.2). @@ -24896,12 +25704,14 @@ If a length modifier appears with any conversion specifier other than as specifi Additional file-opening modes may be specified by characters appended to the mode argument of the fopen function (7.19.5.3). +
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 (7.19.7.11, 7.24.3.10). +
Functions declared in <complex.h> and <math.h> raise SIGFPE to report errors @@ -24909,6 +25719,7 @@ If a length modifier appears with any conversion specifier other than as specifi 7.12). +
- ??? x ???, 3.18 , (comma punctuator), 6.5.2, 6.7, 6.7.2.1, 6.7.2.2, + [^ x ^], 3.18 , (comma punctuator), 6.5.2, 6.7, 6.7.2.1, 6.7.2.2, 6.7.2.3, 6.7.8 - ??? x ???, 3.19 - (subtraction operator), 6.5.6, F.3, G.5.2 + [_ x _], 3.19 - (subtraction operator), 6.5.6, F.3, G.5.2 ! (logical negation operator), 6.5.3.3 - (unary minus operator), 6.5.3.3, F.3 != (inequality operator), 6.5.9 -- (postfix decrement operator), 6.3.2.1, 6.5.2.4 # operator, 6.10.3.2 -- (prefix decrement operator), 6.3.2.1, 6.5.3.1 @@ -26119,4 +26931,5 @@ If a length modifier appears with any conversion specifier other than as specifi wctrans_t type, 7.25.1, 7.25.3.2.2 wctype function, 7.25.2.2.1, 7.25.2.2.2+