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 +

Contents

Contents

+

Contents

Foreword

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. +

Contents

Introduction

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. +

Contents

Programming languages -- C

+

Contents

1. Scope

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. +

Contents

2. Normative references

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). +

Contents

3. Terms, definitions, and symbols

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. +

Contents

3.1

access
@@ -607,12 +615,14 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 NOTE 3 Expressions that are not evaluated do not access objects. +

Contents

3.2

alignment
requirement that objects of a particular type be located on storage boundaries with addresses that are particular multiples of a byte address +

Contents

3.3

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 +

Contents

3.4

behavior
external appearance or action +

Contents

3.4.1

implementation-defined behavior
@@ -636,6 +648,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 when a signed integer is shifted right. +

Contents

3.4.2

locale-specific behavior
@@ -647,6 +660,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 characters other than the 26 lowercase Latin letters. +

Contents

3.4.3

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. +

Contents

3.4.4

unspecified behavior
@@ -673,6 +688,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 evaluated. +

Contents

3.5

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. +

Contents

3.6

byte
@@ -696,12 +713,14 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 bit. +

Contents

3.7

character
<abstract> member of a set of elements used for the organization, control, or representation of data +

Contents

3.7.1

character
@@ -709,6 +728,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 <C> bit representation that fits in a byte +

Contents

3.7.2

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. +

Contents

3.7.3

wide character
bit representation that fits in an object of type wchar_t, capable of representing any character in the current locale +

Contents

3.8

constraint
restriction, either syntactic or semantic, by which the exposition of language elements is to be interpreted +

Contents

3.9

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 +

Contents

3.10

diagnostic message
message belonging to an implementation-defined subset of the implementation's message output +

Contents

3.11

forward reference
reference to a later subclause of this International Standard that contains additional information relevant to this subclause +

Contents

3.12

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 +

Contents

3.13

implementation limit
restriction imposed upon programs by the implementation +

Contents

3.14

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. +

Contents

3.15

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 +

Contents

3.16

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 +

Contents

3.17

value
precise meaning of the contents of an object when interpreted as having a specific type +

Contents

3.17.1

implementation-defined value
unspecified value where each implementation documents how the choice is made +

Contents

3.17.2

indeterminate value
either an unspecified value or a trap representation +

Contents

3.17.3

unspecified value
@@ -809,6 +843,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 NOTE An unspecified value cannot be a trap representation. +

Contents

3.18

[^ x ^]
@@ -817,6 +852,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 EXAMPLE [^2.4^] is 3, [^-2.4^] is -2. +

Contents

3.19

[_ x _]
@@ -825,6 +861,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 EXAMPLE [_2.4_] is 2, [_-2.4_] is -3. +

Contents

4. Conformance

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. +

Contents

5. Environment

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. +

Contents

5.1 Conceptual models

+

Contents

5.1.1 Translation environment

+

Contents

5.1.1.1 Program structure

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). +

Contents

5.1.1.2 Translation phases

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. +

Contents

5.1.1.3 Diagnostics

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. +

Contents

5.1.2 Execution environments

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). +

Contents

5.1.2.1 Freestanding environment

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. +

Contents

5.1.2.2 Hosted environment

A hosted environment need not be provided, but shall conform to the following @@ -1046,6 +1092,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 +

Contents

5.1.2.2.1 Program startup

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. +

Contents

5.1.2.2.2 Program execution

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 +

Contents

5.1.2.2.3 Program termination

If the return type of the main function is a type compatible with int, a return from the @@ -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. +

Contents

5.1.2.3 Program execution

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. +

Contents

5.2 Environmental considerations

+

Contents

5.2.1 Character sets

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). +

Contents

5.2.1.1 Trigraph sequences

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. +

Contents

5.2.1.2 Multibyte characters

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. +

Contents

5.2.2 Character display semantics

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). +

Contents

5.2.3 Signals and interrupts

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. +

Contents

5.2.4 Environmental limits

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. +

Contents

5.2.4.1 Translation limits

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). +

Contents

5.2.4.2 Numerical limits

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). +

Contents

5.2.4.2.1 Sizes of integer types <limits.h>

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

15) See 6.2.5. +

Contents

5.2.4.2.2 Characteristics of floating types <float.h>

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. +

Contents

6. Language

+

Contents

6.1 Notation

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. +

Contents

6.2 Concepts

+

Contents

6.2.1 Scopes of identifiers

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). +

Contents

6.2.2 Linkages of identifiers

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. +

Contents

6.2.3 Name spaces of identifiers

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. +

Contents

6.2.4 Storage durations of objects

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. +

Contents

6.2.5 Types

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. +

Contents

6.2.6 Representations of types

+

Contents

6.2.6.1 General

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. +

Contents

6.2.6.2 Integer types

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. +

Contents

6.2.7 Compatible type and composite type

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. +

Contents

6.3 Conversions

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). +

Contents

6.3.1 Arithmetic operands

+

Contents

6.3.1.1 Boolean, characters, and integers

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. +

Contents

6.3.1.2 Boolean type

When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1. +

Contents

6.3.1.3 Signed and unsigned integers

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. +

Contents

6.3.1.4 Real floating and integer

When a finite value of real floating type is converted to an integer type other than _Bool, @@ -2637,6 +2716,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 range of portable real floating values is (-1, Utype_MAX+1). +

Contents

6.3.1.5 Real floating types

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. +

Contents

6.3.1.6 Complex types

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. +

Contents

6.3.1.7 Real and complex

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. +

Contents

6.3.1.8 Usual arithmetic conversions

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. +

Contents

6.3.2 Other operands

+

Contents

6.3.2.1 Lvalues, arrays, and function designators

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. +

Contents

6.3.2.2 void

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.) +

Contents

6.3.2.3 Pointers

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. +

Contents

6.4 Lexical elements

Syntax

@@ -2912,6 +3000,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 occur in source files. +

Contents

6.4.1 Keywords

Syntax

@@ -2942,8 +3031,10 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007

59) One possible specification for imaginary types appears in annex G. +

Contents

6.4.2 Identifiers

+

Contents

6.4.2.1 General

Syntax

@@ -3003,6 +3094,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 Extended characters may produce a long external identifier. +

Contents

6.4.2.2 Predefined identifiers

Semantics

@@ -3043,6 +3135,7 @@ WG14/N1256 Committee Draft -- Septermber 7, 2007 identifier is explicitly declared using the name __func__, the behavior is undefined. +

Contents

6.4.3 Universal character names

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. +

Contents

6.4.4 Constants

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. +

Contents

6.4.4.1 Integer constants

Syntax

@@ -3232,6 +3327,7 @@ unsigned long long int its list and has no extended integer type, then the integer constant has no type. +

Contents

6.4.4.2 Floating constants

Syntax

@@ -3321,6 +3417,7 @@ unsigned long long int floating constants (see 7.20.1.3). +

Contents

6.4.4.3 Enumeration constants

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). +

Contents

6.4.4.4 Character constants

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). +

Contents

6.4.5 String literals

Syntax

@@ -3534,6 +3633,7 @@ unsigned long long int it by a \0 escape sequence. +

Contents

6.4.6 Punctuators

Syntax

@@ -3575,6 +3675,7 @@ unsigned long long int interchanged. +

Contents

6.4.7 Header names

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. +

Contents

6.4.8 Preprocessing numbers

Syntax

@@ -3664,6 +3766,7 @@ unsigned long long int +

Contents

6.4.9 Comments

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. +

Contents

6.5 Expressions

An expression is a sequence of operators and operands that specifies computation of a @@ -3803,6 +3907,7 @@ unsigned long long int documented. +

Contents

6.5.1 Primary expressions

Syntax

@@ -3834,6 +3939,7 @@ unsigned long long int

79) Thus, an undeclared identifier is a violation of the syntax. +

Contents

6.5.2 Postfix operators

Syntax

@@ -3860,6 +3966,7 @@ unsigned long long int argument-expression-list , assignment-expression +

Contents

6.5.2.1 Array subscripting

Constraints

@@ -3898,6 +4005,7 @@ unsigned long long int (6.5.3.2), array declarators (6.7.5.2). +

Contents

6.5.2.2 Function calls

Constraints

@@ -3987,6 +4095,7 @@ unsigned long long int adjusted to have a pointer type as described in 6.9.1. +

Contents

6.5.2.3 Structure and union members

Constraints

@@ -4101,6 +4210,7 @@ unsigned long long int its operand), the expression (&E)->MOS is the same as E.MOS. +

Contents

6.5.2.4 Postfix increment and decrement operators

Constraints

@@ -4120,6 +4230,7 @@ unsigned long long int it).

Forward references: additive operators (6.5.6), compound assignment (6.5.16.2). +

Contents

6.5.2.5 Compound literals

Constraints

@@ -4265,6 +4376,7 @@ unsigned long long int the same or overlapping representations. +

Contents

6.5.3 Unary operators

Syntax

@@ -4280,6 +4392,7 @@ unsigned long long int & * + - ~ ! +

Contents

6.5.3.1 Prefix increment and decrement operators

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). +

Contents

6.5.3.2 Address and indirection operators

Constraints

@@ -4334,6 +4448,7 @@ unsigned long long int end of its lifetime. +

Contents

6.5.3.3 Unary arithmetic operators

Constraints

@@ -4362,6 +4477,7 @@ unsigned long long int +

Contents

6.5.3.4 The sizeof operator

Constraints

@@ -4433,6 +4549,7 @@ unsigned long long int size of the adjusted (pointer) type (see 6.9.1). +

Contents

6.5.4 Cast operators

Syntax

@@ -4470,6 +4587,7 @@ unsigned long long int unqualified version of the type. +

Contents

6.5.5 Multiplicative operators

Syntax

@@ -4502,6 +4620,7 @@ unsigned long long int

90) This is often called ''truncation toward zero''. +

Contents

6.5.6 Additive operators

Syntax

@@ -4604,6 +4723,7 @@ unsigned long long int element'' requirements. +

Contents

6.5.7 Bitwise shift operators

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. +

Contents

6.5.8 Relational operators

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''. +

Contents

6.5.9 Equality operators

Syntax

@@ -4751,6 +4873,7 @@ unsigned long long int behavior. +

Contents

6.5.10 Bitwise AND operator

Syntax

@@ -4775,6 +4898,7 @@ unsigned long long int +

Contents

6.5.11 Bitwise exclusive OR operator

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). +

Contents

6.5.12 Bitwise inclusive OR operator

Syntax

@@ -4814,6 +4939,7 @@ unsigned long long int operands is set). +

Contents

6.5.13 Logical AND operator

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. +

Contents

6.5.14 Logical OR operator

Syntax

@@ -4855,6 +4982,7 @@ unsigned long long int unequal to 0, the second operand is not evaluated. +

Contents

6.5.15 Conditional operator

Syntax

@@ -4931,6 +5059,7 @@ unsigned long long int

95) A conditional expression does not yield an lvalue. +

Contents

6.5.16 Assignment operators

Syntax

@@ -4958,6 +5087,7 @@ unsigned long long int behavior is undefined. +

Contents

6.5.16.1 Simple assignment

Constraints

@@ -5038,6 +5168,7 @@ unsigned long long int not volatile from the type int volatile * const). +

Contents

6.5.16.2 Compound assignment

Constraints

@@ -5053,6 +5184,7 @@ unsigned long long int expression E1 = E1 op (E2) only in that the lvalue E1 is evaluated only once. +

Contents

6.5.17 Comma operator

Syntax

@@ -5088,6 +5220,7 @@ unsigned long long int

97) A comma operator does not yield an lvalue. +

Contents

6.6 Constant expressions

Syntax

@@ -5176,6 +5309,7 @@ unsigned long long int the expression is a valid integer constant expression with value one. +

Contents

6.7 Declarations

Syntax

@@ -5235,6 +5369,7 @@ unsigned long long int

101) Function definitions have a different syntax, described in 6.9.1. +

Contents

6.7.1 Storage-class specifiers

Syntax

@@ -5284,6 +5419,7 @@ unsigned long long int register is sizeof. +

Contents

6.7.2 Type specifiers

Syntax

@@ -5361,6 +5497,7 @@ unsigned long long int

104) Freestanding implementations are not required to provide complex types. * +

Contents

6.7.2.1 Structure and union specifiers

Syntax

@@ -5572,6 +5709,7 @@ unsigned long long int layouts. +

Contents

6.7.2.2 Enumeration specifiers

Syntax

@@ -5635,6 +5773,7 @@ unsigned long long int been seen. +

Contents

6.7.2.3 Tags

Constraints

@@ -5767,6 +5906,7 @@ unsigned long long int

113) A similar construction with enum does not exist. +

Contents

6.7.3 Type qualifiers

Syntax

@@ -5872,6 +6012,7 @@ unsigned long long int

118) Both of these can occur through the use of typedefs. +

Contents

6.7.3.1 Formal definition of restrict

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. +

Contents

6.7.4 Function specifiers

Syntax

@@ -6079,6 +6221,7 @@ unsigned long long int duration are also distinct in each of the definitions. +

Contents

6.7.5 Declarators

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). +

Contents

6.7.5.1 Pointer declarators

Semantics

@@ -6189,6 +6333,7 @@ unsigned long long int declares constant_ptr as an object that has type ''const-qualified pointer to int''. +

Contents

6.7.5.2 Array declarators

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). +

Contents

6.7.5.3 Function declarators (including prototypes)

Constraints

@@ -6482,6 +6628,7 @@ unsigned long long int

127) If both function types are ''old style'', parameter types are not compared. +

Contents

6.7.6 Type names

Syntax

@@ -6536,6 +6683,7 @@ unsigned long long int parameter specification'', rather than redundant parentheses around the omitted identifier. +

Contents

6.7.7 Type definitions

Syntax

@@ -6643,6 +6791,7 @@ unsigned long long int } +

Contents

6.7.8 Initialization

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. +

Contents

6.8 Statements and blocks

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). +

Contents

6.8.1 Labeled statements

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). +

Contents

6.8.2 Compound statement

Syntax

@@ -7053,6 +7205,7 @@ unsigned long long int

A compound statement is a block. +

Contents

6.8.3 Expression and null statements

Syntax

@@ -7112,6 +7265,7 @@ unsigned long long int

134) Such as assignments, and function calls which have side effects. +

Contents

6.8.4 Selection statements

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. +

Contents

6.8.4.1 The if 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. +

Contents

6.8.4.2 The switch statement

Constraints

@@ -7207,6 +7363,7 @@ unsigned long long int default label associated with the switch that is in the block containing the declaration. +

Contents

6.8.5 Iteration statements

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. +

Contents

6.8.5.1 The while statement

The evaluation of the controlling expression takes place before each execution of the loop body. +

Contents

6.8.5.2 The do statement

The evaluation of the controlling expression takes place after each execution of the loop body. +

Contents

6.8.5.3 The for statement

The statement @@ -7277,6 +7437,7 @@ unsigned long long int specifies an operation (such as incrementing) that is performed after each iteration. +

Contents

6.8.6 Jump statements

Syntax

@@ -7296,6 +7457,7 @@ unsigned long long int +

Contents

6.8.6.1 The goto statement

Constraints

@@ -7353,6 +7515,7 @@ unsigned long long int +

Contents

6.8.6.2 The continue statement

Constraints

@@ -7377,6 +7540,7 @@ unsigned long long int

138) Following the contin: label is a null statement. +

Contents

6.8.6.3 The break statement

Constraints

@@ -7390,6 +7554,7 @@ unsigned long long int +

Contents

6.8.6.4 The return statement

Constraints

@@ -7441,6 +7606,7 @@ unsigned long long int range and precision. +

Contents

6.9 External definitions

Syntax

@@ -7487,6 +7653,7 @@ unsigned long long int external definition for it. +

Contents

6.9.1 Function definitions

Syntax

@@ -7627,6 +7794,7 @@ unsigned long long int

142) See ''future language directions'' (6.11.7). +

Contents

6.9.2 External object definitions

Semantics

@@ -7673,6 +7841,7 @@ unsigned long long int zero on program startup. +

Contents

6.10 Preprocessing directives

Syntax

@@ -7781,6 +7950,7 @@ unsigned long long int # character string literal creation operator in 6.10.3.2, for example). +

Contents

6.10.1 Conditional inclusion

Constraints

@@ -7880,6 +8050,7 @@ unsigned long long int including within a preprocessing directive. +

Contents

6.10.2 Source file inclusion

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. +

Contents

6.10.3 Macro replacement

Constraints

@@ -8059,6 +8231,7 @@ unsigned long long int

150) Despite the name, a non-directive is a preprocessing directive. +

Contents

6.10.3.1 Argument substitution

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. +

Contents

6.10.3.2 The # operator

Constraints

@@ -8097,6 +8271,7 @@ unsigned long long int ## operators is unspecified. +

Contents

6.10.3.3 The ## operator

Constraints

@@ -8149,6 +8324,7 @@ unsigned long long int exist only within translation phase 4. +

Contents

6.10.3.4 Rescanning and further replacement

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. +

Contents

6.10.3.5 Scope of macro definitions

A macro definition lasts (independent of block structure) until a corresponding #undef @@ -8325,6 +8502,7 @@ unsigned long long int +

Contents

6.10.4 Line control

Constraints

@@ -8362,6 +8540,7 @@ unsigned long long int previous forms and is then processed as appropriate. +

Contents

6.10.5 Error directive

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. +

Contents

6.10.6 Pragma directive

Semantics

@@ -8414,6 +8594,7 @@ unsigned long long int

153) See ''future language directions'' (6.11.8). +

Contents

6.10.7 Null directive

Semantics

@@ -8423,6 +8604,7 @@ unsigned long long int has no effect. +

Contents

6.10.8 Predefined macro names

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. +

Contents

6.10.9 Pragma operator

Semantics

@@ -8524,58 +8707,71 @@ unsigned long long int LISTING ( ..\listing.dir ) +

Contents

6.11 Future language directions

+

Contents

6.11.1 Floating types

Future standardization may include additional floating-point types, including those with greater range, precision, or both than long double. +

Contents

6.11.2 Linkages of identifiers

Declaring an identifier with internal linkage at file scope without the static storage- class specifier is an obsolescent feature. +

Contents

6.11.3 External names

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. +

Contents

6.11.4 Character escape sequences

Lowercase letters as escape sequences are reserved for future standardization. Other characters may be used in extensions. +

Contents

6.11.5 Storage-class specifiers

The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature. +

Contents

6.11.6 Function declarators

The use of function declarators with empty parentheses (not prototype-format parameter type declarators) is an obsolescent feature. +

Contents

6.11.7 Function definitions

The use of function definitions with separate parameter identifier and declaration lists (not prototype-format parameter type and identifier declarators) is an obsolescent feature. +

Contents

6.11.8 Pragma directives

Pragmas whose first preprocessing token is STDC are reserved for future standardization. +

Contents

6.11.9 Predefined macro names

Macro names beginning with __STDC_ are reserved for future standardization. +

Contents

7. Library

+

Contents

7.1 Introduction

+

Contents

7.1.1 Definitions of terms

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. +

Contents

7.1.2 Standard headers

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. +

Contents

7.1.3 Reserved identifiers

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. +

Contents

7.1.4 Use of library functions

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. +

Contents

7.2 Diagnostics <assert.h>

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. +

Contents

7.2.1 Program diagnostics

+

Contents

7.2.1.1 The assert macro

Synopsis

@@ -8863,8 +9065,10 @@ unsigned long long int Assertion failed: expression, function abc, file xyz, line nnn. +

Contents

7.3 Complex arithmetic <complex.h>

+

Contents

7.3.1 Introduction

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. +

Contents

7.3.2 Conventions

Values are interpreted as radians, not degrees. An implementation may set errno but is not required to. +

Contents

7.3.3 Branch cuts

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. +

Contents

7.3.4 The CX_LIMITED_RANGE pragma

Synopsis

@@ -8981,8 +9188,10 @@ unsigned long long int where the programmer can determine they are safe. +

Contents

7.3.5 Trigonometric functions

+

Contents

7.3.5.1 The cacos functions

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. +

Contents

7.3.5.2 The casin functions

Synopsis

@@ -9022,6 +9232,7 @@ unsigned long long int along the real axis. +

Contents

7.3.5.3 The catan functions

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. +

Contents

7.3.5.4 The ccos functions

Synopsis

@@ -9057,6 +9269,7 @@ unsigned long long int

The ccos functions return the complex cosine value. +

Contents

7.3.5.5 The csin functions

Synopsis

@@ -9074,6 +9287,7 @@ unsigned long long int The csin functions return the complex sine value. +

Contents

7.3.5.6 The ctan functions

Synopsis

@@ -9090,8 +9304,10 @@ unsigned long long int

The ctan functions return the complex tangent value. +

Contents

7.3.6 Hyperbolic functions

+

Contents

7.3.6.1 The cacosh functions

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. +

Contents

7.3.6.2 The casinh functions

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. +

Contents

7.3.6.3 The catanh functions

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. +

Contents

7.3.6.4 The ccosh functions

Synopsis

@@ -9166,6 +9385,7 @@ unsigned long long int

The ccosh functions return the complex hyperbolic cosine value. +

Contents

7.3.6.5 The csinh functions

Synopsis

@@ -9183,6 +9403,7 @@ unsigned long long int

The csinh functions return the complex hyperbolic sine value. +

Contents

7.3.6.6 The ctanh functions

Synopsis

@@ -9199,8 +9420,10 @@ unsigned long long int

The ctanh functions return the complex hyperbolic tangent value. +

Contents

7.3.7 Exponential and logarithmic functions

+

Contents

7.3.7.1 The cexp functions

Synopsis

@@ -9217,6 +9440,7 @@ unsigned long long int

The cexp functions return the complex base-e exponential value. +

Contents

7.3.7.2 The clog functions

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. +

Contents

7.3.8 Power and absolute-value functions

+

Contents

7.3.8.1 The cabs functions

Synopsis

@@ -9256,6 +9482,7 @@ unsigned long long int

The cabs functions return the complex absolute value. +

Contents

7.3.8.2 The cpow functions

Synopsis

@@ -9275,6 +9502,7 @@ unsigned long long int The cpow functions return the complex power function value. +

Contents

7.3.8.3 The csqrt functions

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). +

Contents

7.3.9 Manipulation functions

+

Contents

7.3.9.1 The carg functions

Synopsis

@@ -9312,6 +9542,7 @@ unsigned long long int

The carg functions return the value of the argument in the interval [-pi , +pi ]. +

Contents

7.3.9.2 The cimag functions

Synopsis

@@ -9333,6 +9564,7 @@ unsigned long long int

170) For a variable z of complex type, z == creal(z) + cimag(z)*I. +

Contents

7.3.9.3 The conj functions

Synopsis

@@ -9350,6 +9582,7 @@ unsigned long long int

The conj functions return the complex conjugate value. +

Contents

7.3.9.4 The cproj functions

Synopsis

@@ -9377,6 +9610,7 @@ unsigned long long int +

Contents

7.3.9.5 The creal functions

Synopsis

@@ -9402,6 +9636,7 @@ unsigned long long int

171) For a variable z of complex type, z == creal(z) + cimag(z)*I. +

Contents

7.4 Character handling <ctype.h>

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). +

Contents

7.4.1 Character classification functions

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. +

Contents

7.4.1.1 The isalnum function

Synopsis

@@ -9442,6 +9679,7 @@ unsigned long long int

The isalnum function tests for any character for which isalpha or isdigit is true. +

Contents

7.4.1.2 The isalpha function

Synopsis

@@ -9465,6 +9703,7 @@ unsigned long long int characters; all four combinations are possible. +

Contents

7.4.1.3 The isblank function

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. +

Contents

7.4.1.4 The iscntrl function

Synopsis

@@ -9491,6 +9731,7 @@ unsigned long long int

The iscntrl function tests for any control character. +

Contents

7.4.1.5 The isdigit function

Synopsis

@@ -9502,6 +9743,7 @@ unsigned long long int

The isdigit function tests for any decimal-digit character (as defined in 5.2.1). +

Contents

7.4.1.6 The isgraph function

Synopsis

@@ -9518,6 +9760,7 @@ unsigned long long int

The isgraph function tests for any printing character except space (' '). +

Contents

7.4.1.7 The islower function

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). +

Contents

7.4.1.8 The isprint function

Synopsis

@@ -9543,6 +9787,7 @@ unsigned long long int

The isprint function tests for any printing character including space (' '). +

Contents

7.4.1.9 The ispunct function

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. +

Contents

7.4.1.10 The isspace function

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. +

Contents

7.4.1.11 The isupper function

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). +

Contents

7.4.1.12 The isxdigit function

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). +

Contents

7.4.2 Character case mapping functions

+

Contents

7.4.2.1 The tolower function

Synopsis

@@ -9618,6 +9868,7 @@ unsigned long long int for any given locale); otherwise, the argument is returned unchanged. +

Contents

7.4.2.2 The toupper function

Synopsis

@@ -9636,6 +9887,7 @@ unsigned long long int for any given locale); otherwise, the argument is returned unchanged. +

Contents

7.5 Errors <errno.h>

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). +

Contents

7.6 Floating-point environment <fenv.h>

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. +

Contents

7.6.1 The FENV_ACCESS pragma

Synopsis

@@ -9862,6 +10116,7 @@ unsigned long long int ''off'', just one evaluation of x + 1 would suffice. +

Contents

7.6.2 Floating-point exceptions

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. +

Contents

7.6.2.1 The feclearexcept function

Synopsis

@@ -9897,6 +10153,7 @@ unsigned long long int +

Contents

7.6.2.2 The fegetexceptflag function

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. +

Contents

7.6.2.3 The feraiseexcept function

Synopsis

@@ -9945,6 +10203,7 @@ unsigned long long int in F.7.6 is in the same spirit. +

Contents

7.6.2.4 The fesetexceptflag function

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. +

Contents

7.6.2.5 The fetestexcept function

Synopsis

@@ -10011,11 +10271,13 @@ unsigned long long int

188) This mechanism allows testing several floating-point exceptions with just one function call. +

Contents

7.6.3 Rounding

The fegetround and fesetround functions provide control of rounding direction modes. +

Contents

7.6.3.1 The fegetround function

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. +

Contents

7.6.3.2 The fesetround function

Synopsis

@@ -10070,11 +10333,13 @@ unsigned long long int +

Contents

7.6.4 Environment

The functions in this section manage the floating-point environment -- status flags and control modes -- as one entity. +

Contents

7.6.4.1 The fegetenv function

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. +

Contents

7.6.4.2 The feholdexcept function

Synopsis

@@ -10117,6 +10383,7 @@ unsigned long long int function to write routines that hide spurious floating-point exceptions from their callers. +

Contents

7.6.4.3 The fesetenv function

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. +

Contents

7.6.4.4 The feupdateenv function

Synopsis

@@ -10181,6 +10449,7 @@ unsigned long long int } +

Contents

7.7 Characteristics of floating types <float.h>

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. +

Contents

7.8 Format conversion of integer types <inttypes.h>

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). +

Contents

7.8.1 Macros for format specifiers

Each of the following object-like macros191) expands to a character string literal @@ -10282,8 +10553,10 @@ unsigned long long int same. +

Contents

7.8.2 Functions for greatest-width integer types

+

Contents

7.8.2.1 The imaxabs function

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. +

Contents

7.8.2.2 The imaxdiv function

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. +

Contents

7.8.2.3 The strtoimax and strtoumax functions

Synopsis

@@ -10351,6 +10626,7 @@ unsigned long long int (7.20.1.4). +

Contents

7.8.2.4 The wcstoimax and wcstoumax functions

Synopsis

@@ -10378,6 +10654,7 @@ unsigned long long int (7.24.4.1.2). +

Contents

7.9 Alternative spellings <iso646.h>

The header <iso646.h> defines the following eleven macros (on the left) that expand @@ -10397,6 +10674,7 @@ unsigned long long int xor_eq ^= +

Contents

7.10 Sizes of integer types <limits.h>

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. +

Contents

7.11 Localization <locale.h>

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). +

Contents

7.11.1 Locale control

+

Contents

7.11.1.1 The setlocale function

Synopsis

@@ -10531,8 +10812,10 @@ unsigned long long int locale when category has the value LC_ALL. +

Contents

7.11.2 Numeric formatting convention inquiry

+

Contents

7.11.2.1 The localeconv function

Synopsis

@@ -10766,6 +11049,7 @@ unsigned long long int +

Contents

7.12 Mathematics <math.h>

The header <math.h> declares two types and many mathematical functions and defines @@ -10894,6 +11178,7 @@ unsigned long long int substantially slower. +

Contents

7.12.1 Treatment of error conditions

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. +

Contents

7.12.2 The FP_CONTRACT pragma

Synopsis

@@ -10973,11 +11259,13 @@ unsigned long long int +

Contents

7.12.3 Classification macros

In the synopses in this subclause, real-floating indicates that the argument shall be an expression of real floating type. +

Contents

7.12.3.1 The fpclassify macro

Synopsis

@@ -11011,6 +11299,7 @@ unsigned long long int become subnormal when converted to double, and zero when converted to float. +

Contents

7.12.3.2 The isfinite macro

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. +

Contents

7.12.3.3 The isinf macro

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. +

Contents

7.12.3.4 The isnan macro

Synopsis

@@ -11072,6 +11363,7 @@ unsigned long long int NaNs in the evaluation type but not in the semantic type. +

Contents

7.12.3.5 The isnormal macro

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. +

Contents

7.12.3.6 The signbit macro

Synopsis

@@ -11115,8 +11408,10 @@ unsigned long long int unsigned, it is treated as positive. +

Contents

7.12.4 Trigonometric functions

+

Contents

7.12.4.1 The acos functions

Synopsis

@@ -11139,6 +11434,7 @@ unsigned long long int +

Contents

7.12.4.2 The asin functions

Synopsis

@@ -11156,6 +11452,7 @@ unsigned long long int

The asin functions return arcsin x in the interval [-pi /2, +pi /2] radians. +

Contents

7.12.4.3 The atan functions

Synopsis

@@ -11172,6 +11469,7 @@ unsigned long long int

The atan functions return arctan x in the interval [-pi /2, +pi /2] radians. +

Contents

7.12.4.4 The atan2 functions

Synopsis

@@ -11191,6 +11489,7 @@ unsigned long long int The atan2 functions return arctan y/x in the interval [-pi , +pi ] radians. +

Contents

7.12.4.5 The cos functions

Synopsis

@@ -11207,6 +11506,7 @@ unsigned long long int

The cos functions return cos x. +

Contents

7.12.4.6 The sin functions

Synopsis

@@ -11223,6 +11523,7 @@ unsigned long long int

The sin functions return sin x. +

Contents

7.12.4.7 The tan functions

Synopsis

@@ -11240,8 +11541,10 @@ unsigned long long int The tan functions return tan x. +

Contents

7.12.5 Hyperbolic functions

+

Contents

7.12.5.1 The acosh functions

Synopsis

@@ -11259,6 +11562,7 @@ unsigned long long int

The acosh functions return arcosh x in the interval [0, +(inf)]. +

Contents

7.12.5.2 The asinh functions

Synopsis

@@ -11275,6 +11579,7 @@ unsigned long long int

The asinh functions return arsinh x. +

Contents

7.12.5.3 The atanh functions

Synopsis

@@ -11294,6 +11599,7 @@ unsigned long long int

The atanh functions return artanh x. +

Contents

7.12.5.4 The cosh functions

Synopsis

@@ -11311,6 +11617,7 @@ unsigned long long int

The cosh functions return cosh x. +

Contents

7.12.5.5 The sinh functions

Synopsis

@@ -11328,6 +11635,7 @@ unsigned long long int

The sinh functions return sinh x. +

Contents

7.12.5.6 The tanh functions

Synopsis

@@ -11345,8 +11653,10 @@ unsigned long long int

The tanh functions return tanh x. +

Contents

7.12.6 Exponential and logarithmic functions

+

Contents

7.12.6.1 The exp functions

Synopsis

@@ -11364,6 +11674,7 @@ unsigned long long int

The exp functions return ex. +

Contents

7.12.6.2 The exp2 functions

Synopsis

@@ -11381,6 +11692,7 @@ unsigned long long int

The exp2 functions return 2x. +

Contents

7.12.6.3 The expm1 functions

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. +

Contents

7.12.6.4 The frexp functions

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. +

Contents

7.12.6.5 The ilogb functions

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). +

Contents

7.12.6.6 The ldexp functions

Synopsis

@@ -11466,6 +11781,7 @@ unsigned long long int

The ldexp functions return x 2exp . +

Contents

7.12.6.7 The log functions

Synopsis

@@ -11483,6 +11799,7 @@ unsigned long long int

The log functions return loge x. +

Contents

7.12.6.8 The log10 functions

Synopsis

@@ -11501,6 +11818,7 @@ unsigned long long int

The log10 functions return log10 x. +

Contents

7.12.6.9 The log1p functions

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). +

Contents

7.12.6.10 The log2 functions

Synopsis

@@ -11545,6 +11864,7 @@ unsigned long long int +

Contents

7.12.6.11 The logb functions

Synopsis

@@ -11567,6 +11887,7 @@ unsigned long long int

The logb functions return the signed exponent of x. +

Contents

7.12.6.12 The modf functions

Synopsis

@@ -11586,6 +11907,7 @@ unsigned long long int The modf functions return the signed fractional part of value. +

Contents

7.12.6.13 The scalbn and scalbln functions

Synopsis

@@ -11606,8 +11928,10 @@ unsigned long long int

The scalbn and scalbln functions return x FLT_RADIXn . +

Contents

7.12.7 Power and absolute-value functions

+

Contents

7.12.7.1 The cbrt functions

Synopsis

@@ -11624,6 +11948,7 @@ unsigned long long int

The cbrt functions return x1/3. +

Contents

7.12.7.2 The fabs functions

Synopsis

@@ -11641,6 +11966,7 @@ unsigned long long int

The fabs functions return | x |. +

Contents

7.12.7.3 The hypot functions

Synopsis

@@ -11659,6 +11985,7 @@ unsigned long long int

The hypot functions return (sqrt)(x2 + y2). +

Contents

7.12.7.4 The pow functions

Synopsis

@@ -11678,6 +12005,7 @@ unsigned long long int

The pow functions return xy. +

Contents

7.12.7.5 The sqrt functions

Synopsis

@@ -11696,8 +12024,10 @@ unsigned long long int

The sqrt functions return (sqrt)(x). +

Contents

7.12.8 Error and gamma functions

+

Contents

7.12.8.1 The erf functions

Synopsis

@@ -11719,6 +12049,7 @@ unsigned long long int (sqrt)(pi) 0 +

Contents

7.12.8.2 The erfc functions

Synopsis

@@ -11742,6 +12073,7 @@ unsigned long long int +

Contents

7.12.8.3 The lgamma functions

Synopsis

@@ -11760,6 +12092,7 @@ unsigned long long int

The lgamma functions return loge | (Gamma)(x) |. +

Contents

7.12.8.4 The tgamma functions

Synopsis

@@ -11778,8 +12111,10 @@ unsigned long long int

The tgamma functions return (Gamma)(x). +

Contents

7.12.9 Nearest integer functions

+

Contents

7.12.9.1 The ceil functions

Synopsis

@@ -11797,6 +12132,7 @@ unsigned long long int

The ceil functions return [^x^], expressed as a floating-point number. +

Contents

7.12.9.2 The floor functions

Synopsis

@@ -11813,6 +12149,7 @@ unsigned long long int

The floor functions return [_x_], expressed as a floating-point number. +

Contents

7.12.9.3 The nearbyint functions

Synopsis

@@ -11831,6 +12168,7 @@ unsigned long long int

The nearbyint functions return the rounded integer value. +

Contents

7.12.9.4 The rint functions

Synopsis

@@ -11850,6 +12188,7 @@ unsigned long long int

The rint functions return the rounded integer value. +

Contents

7.12.9.5 The lrint and llrint functions

Synopsis

@@ -11872,6 +12211,7 @@ unsigned long long int

The lrint and llrint functions return the rounded integer value. +

Contents

7.12.9.6 The round functions

Synopsis

@@ -11891,6 +12231,7 @@ unsigned long long int The round functions return the rounded integer value. +

Contents

7.12.9.7 The lround and llround functions

Synopsis

@@ -11913,6 +12254,7 @@ unsigned long long int

The lround and llround functions return the rounded integer value. +

Contents

7.12.9.8 The trunc functions

Synopsis

@@ -11931,8 +12273,10 @@ unsigned long long int The trunc functions return the truncated integer value. +

Contents

7.12.10 Remainder functions

+

Contents

7.12.10.1 The fmod functions

Synopsis

@@ -11952,6 +12296,7 @@ unsigned long long int whether a domain error occurs or the fmod functions return zero is implementation- defined. +

Contents

7.12.10.2 The remainder functions

Synopsis

@@ -11981,6 +12326,7 @@ unsigned long long int x.'' This definition is applicable for all implementations. +

Contents

7.12.10.3 The remquo functions

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. +

Contents

7.12.11 Manipulation functions

+

Contents

7.12.11.1 The copysign functions

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. +

Contents

7.12.11.2 The nan functions

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). +

Contents

7.12.11.3 The nextafter functions

Synopsis

@@ -12077,6 +12427,7 @@ unsigned long long int function. +

Contents

7.12.11.4 The nexttoward functions

Synopsis

@@ -12097,8 +12448,10 @@ unsigned long long int range or precision in a floating second argument. +

Contents

7.12.12 Maximum, minimum, and positive difference functions

+

Contents

7.12.12.1 The fdim functions

Synopsis

@@ -12121,6 +12474,7 @@ unsigned long long int

The fdim functions return the positive difference value. +

Contents

7.12.12.2 The fmax functions

Synopsis

@@ -12146,6 +12500,7 @@ unsigned long long int fmax functions choose the numeric value. See F.9.9.2. +

Contents

7.12.12.3 The fmin functions

Synopsis

@@ -12166,8 +12521,10 @@ unsigned long long int

214) The fmin functions are analogous to the fmax functions in their treatment of NaNs. +

Contents

7.12.13 Floating multiply-add

+

Contents

7.12.13.1 The fma functions

Synopsis

@@ -12192,6 +12549,7 @@ unsigned long long int +

Contents

7.12.14 Comparison macros

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. +

Contents

7.12.14.1 The isgreater macro

Synopsis

@@ -12228,6 +12587,7 @@ unsigned long long int

The isgreater macro returns the value of (x) > (y). +

Contents

7.12.14.2 The isgreaterequal macro

Synopsis

@@ -12249,6 +12609,7 @@ unsigned long long int

The isgreaterequal macro returns the value of (x) >= (y). +

Contents

7.12.14.3 The isless macro

Synopsis

@@ -12266,6 +12627,7 @@ unsigned long long int

The isless macro returns the value of (x) < (y). +

Contents

7.12.14.4 The islessequal macro

Synopsis

@@ -12283,6 +12645,7 @@ unsigned long long int

The islessequal macro returns the value of (x) <= (y). +

Contents

7.12.14.5 The islessgreater macro

Synopsis

@@ -12302,6 +12665,7 @@ unsigned long long int

The islessgreater macro returns the value of (x) < (y) || (x) > (y). +

Contents

7.12.14.6 The isunordered macro

Synopsis

@@ -12317,6 +12681,7 @@ unsigned long long int The isunordered macro returns 1 if its arguments are unordered and 0 otherwise. +

Contents

7.13 Nonlocal jumps <setjmp.h>

The header <setjmp.h> defines the macro setjmp, and declares one function and @@ -12342,8 +12707,10 @@ unsigned long long int a program. +

Contents

7.13.1 Save calling environment

+

Contents

7.13.1.1 The setjmp macro

Synopsis

@@ -12378,8 +12745,10 @@ unsigned long long int

If the invocation appears in any other context, the behavior is undefined. +

Contents

7.13.2 Restore calling environment

+

Contents

7.13.2.1 The longjmp function

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. +

Contents

7.14 Signal handling <signal.h>

The header <signal.h> declares a type and two functions and defines several macros, @@ -12499,8 +12869,10 @@ unsigned long long int and termination. +

Contents

7.14.1 Specify signal handling

+

Contents

7.14.1.1 The signal function

Synopsis

@@ -12567,8 +12939,10 @@ unsigned long long int

220) If any signal is generated by an asynchronous signal handler, the behavior is undefined. +

Contents

7.14.2 Send signal

+

Contents

7.14.2.1 The raise function

Synopsis

@@ -12586,6 +12960,7 @@ unsigned long long int The raise function returns zero if successful, nonzero if unsuccessful. +

Contents

7.15 Variable arguments <stdarg.h>

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. +

Contents

7.15.1 Variable argument list access macros

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. +

Contents

7.15.1.1 The va_arg macro

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. +

Contents

7.15.1.2 The va_copy macro

Synopsis

@@ -12674,6 +13052,7 @@ unsigned long long int

The va_copy macro returns no value. +

Contents

7.15.1.3 The va_end macro

Synopsis

@@ -12695,6 +13074,7 @@ unsigned long long int

The va_end macro returns no value. +

Contents

7.15.1.4 The va_start macro

Synopsis

@@ -12778,6 +13158,7 @@ unsigned long long int } +

Contents

7.16 Boolean type and values <stdbool.h>

The header <stdbool.h> defines four macros. @@ -12815,6 +13196,7 @@ unsigned long long int

222) See ''future library directions'' (7.26.7). +

Contents

7.17 Common definitions <stddef.h>

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). +

Contents

7.18 Integer types <stdint.h>

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. +

Contents

7.18.1 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 +

Contents

7.18.1.1 Exact-width integer types

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. +

Contents

7.18.1.2 Minimum-width integer types

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. +

Contents

7.18.1.3 Fastest minimum-width integer types

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. +

Contents

7.18.1.4 Integer types capable of holding object pointers

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. +

Contents

7.18.1.5 Greatest-width integer types

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. +

Contents

7.18.2 Limits of specified-width integer types

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. +

Contents

7.18.2.1 Limits of exact-width integer types

+

Contents

7.18.2.2 Limits of minimum-width integer types

+

Contents

7.18.2.3 Limits of fastest minimum-width integer types

+

Contents

7.18.2.4 Limits of integer types capable of holding object pointers

+

Contents

7.18.2.5 Limits of greatest-width integer types

+

Contents

7.18.3 Limits of other integer types

The following object-like macros227) specify the minimum and maximum limits of @@ -13175,6 +13571,7 @@ unsigned long long int character set. +

Contents

7.18.4 Macros for integer constants

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. +

Contents

7.18.4.1 Macros for minimum-width integer constants

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. +

Contents

7.18.4.2 Macros for greatest-width integer constants

The following macro expands to an integer constant expression having the value specified @@ -13222,8 +13621,10 @@ unsigned long long int UINTMAX_C(value) +

Contents

7.19 Input/output <stdio.h>

+

Contents

7.19.1 Introduction

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. +

Contents

7.19.2 Streams

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. +

Contents

7.19.3 Files

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. +

Contents

7.19.4 Operations on files

+

Contents

7.19.4.1 The remove function

Synopsis

@@ -13542,6 +13947,7 @@ unsigned long long int

The remove function returns zero if the operation succeeds, nonzero if it fails. +

Contents

7.19.4.2 The rename function

Synopsis

@@ -13566,6 +13972,7 @@ unsigned long long int or that it is necessary to copy its contents to effectuate its renaming. +

Contents

7.19.4.3 The tmpfile function

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). +

Contents

7.19.4.4 The tmpnam function

Synopsis

@@ -13630,8 +14038,10 @@ unsigned long long int is ended, and before program termination. +

Contents

7.19.5 File access functions

+

Contents

7.19.5.1 The fclose function

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. +

Contents

7.19.5.2 The fflush function

Synopsis

@@ -13675,6 +14086,7 @@ unsigned long long int error occurs, otherwise it returns zero.

Forward references: the fopen function (7.19.5.3). +

Contents

7.19.5.3 The fopen function

Synopsis

@@ -13740,6 +14152,7 @@ unsigned long long int conform to the properties in 7.19.2). +

Contents

7.19.5.4 The freopen function

Synopsis

@@ -13775,6 +14188,7 @@ unsigned long long int returned by the fopen function may be assigned. +

Contents

7.19.5.5 The setbuf function

Synopsis

@@ -13793,6 +14207,7 @@ unsigned long long int The setbuf function returns no value.

Forward references: the setvbuf function (7.19.5.6). +

Contents

7.19.5.6 The setvbuf function

Synopsis

@@ -13829,6 +14244,7 @@ unsigned long long int before a buffer that has automatic storage duration is deallocated upon block exit. +

Contents

7.19.6 Formatted input/output functions

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. +

Contents

7.19.6.1 The fprintf function

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. +

Contents

7.19.6.2 The fscanf function

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). +

Contents

7.19.6.3 The printf function

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. +

Contents

7.19.6.4 The scanf function

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. +

Contents

7.19.6.5 The snprintf function

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. +

Contents

7.19.6.6 The sprintf function

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. +

Contents

7.19.6.7 The sscanf function

Synopsis

@@ -14659,6 +15082,7 @@ If a length modifier appears with any conversion specifier other than as specifi early matching failure. +

Contents

7.19.6.8 The vfprintf function

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. +

Contents

7.19.6.9 The vfscanf function

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. +

Contents

7.19.6.10 The vprintf function

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. +

Contents

7.19.6.11 The vscanf function

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. +

Contents

7.19.6.12 The vsnprintf function

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. +

Contents

7.19.6.13 The vsprintf function

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. +

Contents

7.19.6.14 The vsscanf function

Synopsis

@@ -14843,8 +15273,10 @@ If a length modifier appears with any conversion specifier other than as specifi early matching failure. +

Contents

7.19.7 Character input/output functions

+

Contents

7.19.7.1 The fgetc function

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. +

Contents

7.19.7.2 The fgets function

Synopsis

@@ -14896,6 +15329,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.19.7.3 The fputc function

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. +

Contents

7.19.7.4 The fputs function

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. +

Contents

7.19.7.5 The getc function

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. +

Contents

7.19.7.6 The getchar function

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. +

Contents

7.19.7.7 The gets function

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). +

Contents

7.19.7.8 The putc function

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. +

Contents

7.19.7.9 The putchar function

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. +

Contents

7.19.7.10 The puts function

Synopsis

@@ -15041,6 +15482,7 @@ If a length modifier appears with any conversion specifier other than as specifi value. +

Contents

7.19.7.11 The ungetc function

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). +

Contents

7.19.8 Direct input/output functions

+

Contents

7.19.8.1 The fread function

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. +

Contents

7.19.8.2 The fwrite function

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. +

Contents

7.19.9 File positioning functions

+

Contents

7.19.9.1 The fgetpos function

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). +

Contents

7.19.9.2 The fseek function

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). +

Contents

7.19.9.3 The fsetpos function

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. +

Contents

7.19.9.4 The ftell function

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. +

Contents

7.19.9.5 The rewind function

Synopsis

@@ -15259,8 +15710,10 @@ If a length modifier appears with any conversion specifier other than as specifi

The rewind function returns no value. +

Contents

7.19.10 Error-handling functions

+

Contents

7.19.10.1 The clearerr function

Synopsis

@@ -15277,6 +15730,7 @@ If a length modifier appears with any conversion specifier other than as specifi The clearerr function returns no value. +

Contents

7.19.10.2 The feof function

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. +

Contents

7.19.10.3 The ferror function

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. +

Contents

7.19.10.4 The perror function

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). +

Contents

7.20 General utilities <stdlib.h>

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). +

Contents

7.20.1 Numeric conversion functions

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. +

Contents

7.20.1.1 The atof function

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). +

Contents

7.20.1.2 The atoi, atol, and atoll functions

Synopsis

@@ -15430,6 +15890,7 @@ If a length modifier appears with any conversion specifier other than as specifi (7.20.1.4). +

Contents

7.20.1.3 The strtod, strtof, and strtold functions

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. +

Contents

7.20.1.4 The strtol, strtoll, strtoul, and strtoull functions

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. +

Contents

7.20.2 Pseudo-random sequence generation functions

+

Contents

7.20.2.1 The rand function

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. +

Contents

7.20.2.2 The srand function

Synopsis

@@ -15676,6 +16141,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.20.3 Memory management functions

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. +

Contents

7.20.3.1 The calloc function

Synopsis

@@ -15710,6 +16177,7 @@ If a length modifier appears with any conversion specifier other than as specifi constant. +

Contents

7.20.3.2 The free function

Synopsis

@@ -15731,6 +16199,7 @@ If a length modifier appears with any conversion specifier other than as specifi

The free function returns no value. +

Contents

7.20.3.3 The malloc function

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. +

Contents

7.20.3.4 The realloc function

Synopsis

@@ -15773,8 +16243,10 @@ If a length modifier appears with any conversion specifier other than as specifi allocated. +

Contents

7.20.4 Communication with the environment

+

Contents

7.20.4.1 The abort function

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. +

Contents

7.20.4.2 The atexit function

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). +

Contents

7.20.4.3 The exit function

Synopsis

@@ -15849,6 +16323,7 @@ If a length modifier appears with any conversion specifier other than as specifi other registered functions. +

Contents

7.20.4.4 The _Exit function

Synopsis

@@ -15873,6 +16348,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.20.4.5 The getenv function

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. +

Contents

7.20.4.6 The system function

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. +

Contents

7.20.5 Searching and sorting utilities

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 +

Contents

7.20.5.1 The bsearch function

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. +

Contents

7.20.5.2 The qsort function

Synopsis

@@ -16016,8 +16496,10 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.20.6 Integer arithmetic functions

+

Contents

7.20.6.1 The abs, labs and llabs functions

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. +

Contents

7.20.6.2 The div, ldiv, and lldiv functions

Synopsis

@@ -16065,6 +16548,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.20.7 Multibyte/wide character conversion functions

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. +

Contents

7.20.7.1 The mblen function

Synopsis

@@ -16113,6 +16598,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.20.7.2 The mbtowc function

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. +

Contents

7.20.7.3 The wctomb function

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. +

Contents

7.20.8 Multibyte/wide string conversion functions

The behavior of the multibyte string functions is affected by the LC_CTYPE category of the current locale. +

Contents

7.20.8.1 The mbstowcs function

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. +

Contents

7.20.8.2 The wcstombs function

Synopsis

@@ -16243,8 +16733,10 @@ If a length modifier appears with any conversion specifier other than as specifi any.267) +

Contents

7.21 String handling <string.h>

+

Contents

7.21.1 String function conventions

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). +

Contents

7.21.2 Copying functions

+

Contents

7.21.2.1 The memcpy function

Synopsis

@@ -16295,6 +16789,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.21.2.2 The memmove function

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. +

Contents

7.21.2.3 The strcpy function

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. +

Contents

7.21.2.4 The strncpy function

Synopsis

@@ -16358,8 +16855,10 @@ If a length modifier appears with any conversion specifier other than as specifi not be null-terminated. +

Contents

7.21.3 Concatenation functions

+

Contents

7.21.3.1 The strcat function

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. +

Contents

7.21.3.2 The strncat function

Synopsis

@@ -16406,6 +16906,7 @@ If a length modifier appears with any conversion specifier other than as specifi strlen(s1)+n+1. +

Contents

7.21.4 Comparison functions

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. +

Contents

7.21.4.1 The memcmp function

Synopsis

@@ -16436,6 +16938,7 @@ If a length modifier appears with any conversion specifier other than as specifi comparison. +

Contents

7.21.4.2 The strcmp function

Synopsis

@@ -16455,6 +16958,7 @@ If a length modifier appears with any conversion specifier other than as specifi pointed to by s2. +

Contents

7.21.4.3 The strcoll function

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. +

Contents

7.21.4.4 The strncmp function

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. +

Contents

7.21.4.5 The strxfrm function

Synopsis

@@ -16523,8 +17029,10 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.21.5 Search functions

+

Contents

7.21.5.1 The memchr function

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. +

Contents

7.21.5.2 The strchr function

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. +

Contents

7.21.5.3 The strcspn function

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. +

Contents

7.21.5.4 The strpbrk function

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. +

Contents

7.21.5.5 The strrchr function

Synopsis

@@ -16610,6 +17122,7 @@ If a length modifier appears with any conversion specifier other than as specifi occur in the string. +

Contents

7.21.5.6 The strspn function

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. +

Contents

7.21.5.7 The strstr function

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. +

Contents

7.21.5.8 The strtok function

Synopsis

@@ -16692,8 +17207,10 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.21.6 Miscellaneous functions

+

Contents

7.21.6.1 The memset function

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. +

Contents

7.21.6.2 The strerror function

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. +

Contents

7.21.6.3 The strlen function

Synopsis

@@ -16746,6 +17265,7 @@ If a length modifier appears with any conversion specifier other than as specifi character. +

Contents

7.22 Type-generic math <tgmath.h>

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. +

Contents

7.23 Date and time <time.h>

+

Contents

7.23.1 Components of time

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. +

Contents

7.23.2 Time manipulation functions

+

Contents

7.23.2.1 The clock function

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. +

Contents

7.23.2.2 The difftime function

Synopsis

@@ -16982,6 +17507,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.23.2.3 The mktime function

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. +

Contents

7.23.2.4 The time function

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. +

Contents

7.23.3 Time conversion functions

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. +

Contents

7.23.3.1 The asctime function

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. +

Contents

7.23.3.2 The ctime function

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). +

Contents

7.23.3.3 The gmtime function

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. +

Contents

7.23.3.4 The localtime function

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. +

Contents

7.23.3.5 The strftime function

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. +

Contents

7.24 Extended multibyte and wide character utilities <wchar.h>

+

Contents

7.24.1 Introduction

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. +

Contents

7.24.2 Formatted wide character input/output functions

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. +

Contents

7.24.2.1 The fwprintf function

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. +

Contents

7.24.2.2 The fwscanf function

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). +

Contents

7.24.2.3 The swprintf function

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. +

Contents

7.24.2.4 The swscanf function

Synopsis

@@ -18010,6 +18550,7 @@ If a length modifier appears with any conversion specifier other than as specifi early matching failure. +

Contents

7.24.2.5 The vfwprintf function

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. +

Contents

7.24.2.6 The vfwscanf function

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. +

Contents

7.24.2.7 The vswprintf function

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. +

Contents

7.24.2.8 The vswscanf function

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. +

Contents

7.24.2.9 The vwprintf function

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. +

Contents

7.24.2.10 The vwscanf function

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. +

Contents

7.24.2.11 The wprintf function

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. +

Contents

7.24.2.12 The wscanf function

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. +

Contents

7.24.3 Wide character input/output functions

+

Contents

7.24.3.1 The fgetwc function

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. +

Contents

7.24.3.2 The fgetws function

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. +

Contents

7.24.3.3 The fputwc function

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. +

Contents

7.24.3.4 The fputws function

Synopsis

@@ -18305,6 +18858,7 @@ If a length modifier appears with any conversion specifier other than as specifi returns a nonnegative value. +

Contents

7.24.3.5 The fwide function

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. +

Contents

7.24.3.6 The getwc function

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. +

Contents

7.24.3.7 The getwchar function

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. +

Contents

7.24.3.8 The putwc function

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. +

Contents

7.24.3.9 The putwchar function

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. +

Contents

7.24.3.10 The ungetwc function

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. +

Contents

7.24.4 General wide string utilities

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. +

Contents

7.24.4.1 Wide string numeric conversion functions
+

Contents

7.24.4.1.1 The wcstod, wcstof, and wcstold functions

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. +

Contents

7.24.4.1.2 The wcstol, wcstoll, wcstoul, and wcstoull functions

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. +

Contents

7.24.4.2 Wide string copying functions
+

Contents

7.24.4.2.1 The wcscpy function

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. +

Contents

7.24.4.2.2 The wcsncpy function

Synopsis

@@ -18699,6 +19265,7 @@ If a length modifier appears with any conversion specifier other than as specifi result will not be null-terminated. +

Contents

7.24.4.2.3 The wmemcpy function

Synopsis

@@ -18721,6 +19288,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.24.4.2.4 The wmemmove function

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. +

Contents

7.24.4.3 Wide string concatenation functions
+

Contents

7.24.4.3.1 The wcscat function

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. +

Contents

7.24.4.3.2 The wcsncat function

Synopsis

@@ -18785,12 +19356,14 @@ If a length modifier appears with any conversion specifier other than as specifi wcslen(s1)+n+1. +

Contents

7.24.4.4 Wide string comparison functions

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. +

Contents

7.24.4.4.1 The wcscmp function

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. +

Contents

7.24.4.4.2 The wcscoll function

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. +

Contents

7.24.4.4.3 The wcsncmp function

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. +

Contents

7.24.4.4.4 The wcsxfrm function

Synopsis

@@ -18881,6 +19457,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.24.4.4.5 The wmemcmp function

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. +

Contents

7.24.4.5 Wide string search functions
+

Contents

7.24.4.5.1 The wcschr function

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. +

Contents

7.24.4.5.2 The wcscspn function

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. +

Contents

7.24.4.5.3 The wcspbrk function

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. +

Contents

7.24.4.5.4 The wcsrchr function

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. +

Contents

7.24.4.5.5 The wcsspn function

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. +

Contents

7.24.4.5.6 The wcsstr function

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. +

Contents

7.24.4.5.7 The wcstok function

Synopsis

@@ -19060,6 +19645,7 @@ If a length modifier appears with any conversion specifier other than as specifi +

Contents

7.24.4.5.8 The wmemchr function

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. +

Contents

7.24.4.6 Miscellaneous functions
+

Contents

7.24.4.6.1 The wcslen function

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. +

Contents

7.24.4.6.2 The wmemset function

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. +

Contents

7.24.5 Wide character time conversion functions

+

Contents

7.24.5.1 The wcsftime function

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. +

Contents

7.24.6 Extended multibyte/wide character conversion utilities

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. +

Contents

7.24.6.1 Single-byte/wide character conversion functions
+

Contents

7.24.6.1.1 The btowc function

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. +

Contents

7.24.6.1.2 The wctob function

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. +

Contents

7.24.6.2 Conversion state functions
+

Contents

7.24.6.2.1 The mbsinit function

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. +

Contents

7.24.6.3 Restartable multibyte/wide character conversion functions

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. +

Contents

7.24.6.3.1 The mbrlen function

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). +

Contents

7.24.6.3.2 The mbrtowc function

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). +

Contents

7.24.6.3.3 The wcrtomb function

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. +

Contents

7.24.6.4 Restartable multibyte/wide string conversion functions

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. +

Contents

7.24.6.4.1 The mbsrtowcs function

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. +

Contents

7.24.6.4.2 The wcsrtombs function

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. +

Contents

7.25 Wide character classification and mapping utilities <wctype.h>

+

Contents

7.25.1 Introduction

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). +

Contents

7.25.2 Wide character classification utilities

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. +

Contents

7.25.2.1 Wide character classification functions

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. +

Contents

7.25.2.1.1 The iswalnum function

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. +

Contents

7.25.2.1.2 The iswalpha function

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. +

Contents

7.25.2.1.3 The iswblank function

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. +

Contents

7.25.2.1.4 The iswcntrl function

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. +

Contents

7.25.2.1.5 The iswdigit function

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). +

Contents

7.25.2.1.6 The iswgraph function

Synopsis

@@ -19632,6 +20246,7 @@ If a length modifier appears with any conversion specifier other than as specifi characters other than ' '. +

Contents

7.25.2.1.7 The iswlower function

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. +

Contents

7.25.2.1.8 The iswprint function

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. +

Contents

7.25.2.1.9 The iswpunct function

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) +

Contents

7.25.2.1.10 The iswspace function

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. +

Contents

7.25.2.1.11 The iswupper function

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. +

Contents

7.25.2.1.12 The iswxdigit function

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). +

Contents

7.25.2.2 Extensible wide character classification functions

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). +

Contents

7.25.2.2.1 The iswctype function

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). +

Contents

7.25.2.2.2 The wctype function

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. * +

Contents

7.25.3 Wide character case mapping utilities

The header <wctype.h> declares several functions useful for mapping wide characters. +

Contents

7.25.3.1 Wide character case mapping functions
+

Contents

7.25.3.1.1 The towlower function

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. +

Contents

7.25.3.1.2 The towupper function

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. +

Contents

7.25.3.2 Extensible wide character case mapping functions

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). +

Contents

7.25.3.2.1 The towctrans function

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. +

Contents

7.25.3.2.2 The wctrans function

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. +

Contents

7.26 Future library directions

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. +

Contents

7.26.1 Complex arithmetic <complex.h>

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. +

Contents

7.26.2 Character handling <ctype.h>

Function names that begin with either is or to, and a lowercase letter may be added to the declarations in the <ctype.h> header. +

Contents

7.26.3 Errors <errno.h>

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. +

Contents

7.26.4 Format conversion of integer types <inttypes.h>

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. +

Contents

7.26.5 Localization <locale.h>

Macros that begin with LC_ and an uppercase letter may be added to the definitions in the <locale.h> header. +

Contents

7.26.6 Signal handling <signal.h>

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. +

Contents

7.26.7 Boolean type and values <stdbool.h>

The ability to undefine and perhaps then redefine the macros bool, true, and false is an obsolescent feature. +

Contents

7.26.8 Integer types <stdint.h>

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. +

Contents

7.26.9 Input/output <stdio.h>

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. +

Contents

7.26.10 General utilities <stdlib.h>

Function names that begin with str and a lowercase letter may be added to the declarations in the <stdlib.h> header. +

Contents

7.26.11 String handling <string.h>

Function names that begin with str, mem, or wcs and a lowercase letter may be added to the declarations in the <string.h> header. +

Contents

7.26.12 Extended multibyte and wide character utilities <wchar.h>

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. +

Contents

7.26.13 Wide character classification and mapping utilities

<wctype.h>

@@ -19957,6 +20601,7 @@ If a length modifier appears with any conversion specifier other than as specifi declarations in the <wctype.h> header. +

Contents

Annex A

                                               (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.
  
 
+

Contents

A.1 Lexical grammar

+

Contents

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
 
+

Contents

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
+

Contents

A.1.3 Identifiers

(6.4.2.1) identifier:
@@ -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
 
+

Contents

A.1.4 Universal character names

(6.4.3) universal-character-name:
@@ -20041,6 +20691,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                             hexadecimal-digit hexadecimal-digit
 
+

Contents

A.1.5 Constants

(6.4.4) constant:
@@ -20210,6 +20861,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                hexadecimal-escape-sequence hexadecimal-digit
 
+

Contents

A.1.6 String literals

(6.4.5) string-literal:
@@ -20229,6 +20881,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                 escape-sequence
 
+

Contents

A.1.7 Punctuators

(6.4.6) punctuator: one of
@@ -20241,6 +20894,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                <: :> <% %> %: %:%:
 
+

Contents

A.1.8 Header names

(6.4.7) header-name:
@@ -20268,6 +20922,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                             the new-line character and "
 
+

Contents

A.1.9 Preprocessing numbers

(6.4.8) pp-number: @@ -20283,8 +20938,10 @@ If a length modifier appears with any conversion specifier other than as specifi pp-number . +

Contents

A.2 Phrase structure grammar

+

Contents

A.2.1 Expressions

(6.5.1) primary-expression:
@@ -20412,6 +21069,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                conditional-expression
 
+

Contents

A.2.2 Declarations

(6.7) declaration:
@@ -20619,6 +21277,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                . identifier
 
+

Contents

A.2.3 Statements

(6.8) statement:
@@ -20675,6 +21334,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                return expressionopt ;
 
+

Contents

A.2.4 External definitions

(6.9) translation-unit:
@@ -20696,6 +21356,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                declaration-list declaration
 
+

Contents

A.3 Preprocessing directives

(6.10) preprocessing-file:
@@ -20784,18 +21445,21 @@ If a length modifier appears with any conversion specifier other than as specifi
                the new-line character
 
+

Contents

Annex B

                                (informative)
                            Library summary
 
+

Contents

B.1 Diagnostics <assert.h>

         NDEBUG
         void assert(scalar expression);
 
+

Contents

B.2 Complex <complex.h>

@@ -20872,6 +21536,7 @@ If a length modifier appears with any conversion specifier other than as specifi long double creall(long double complex z); +

Contents

B.3 Character handling <ctype.h>

         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);
 
+

Contents

B.4 Errors <errno.h>

         EDOM            EILSEQ             ERANGE            errno
 
+

Contents

B.5 Floating-point environment <fenv.h>

@@ -20918,6 +21585,7 @@ If a length modifier appears with any conversion specifier other than as specifi
         int feupdateenv(const fenv_t *envp);
 
+

Contents

B.6 Characteristics of floating types <float.h>

        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
 
+

Contents

B.7 Format conversion of integer types <inttypes.h>

@@ -20960,6 +21629,7 @@ If a length modifier appears with any conversion specifier other than as specifi
                wchar_t ** restrict endptr, int base);
 
+

Contents

B.8 Alternative spellings <iso646.h>

       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
 
+

Contents

B.9 Sizes of integer types <limits.h>

       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
 
+

Contents

B.10 Localization <locale.h>

       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);
 
+

Contents

B.11 Mathematics <math.h>

@@ -21186,6 +21859,7 @@ If a length modifier appears with any conversion specifier other than as specifi int isunordered(real-floating x, real-floating y); +

Contents

B.12 Nonlocal jumps <setjmp.h>

        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);
 
+

Contents

B.13 Signal handling <signal.h>

        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);
 
+

Contents

B.14 Variable arguments <stdarg.h>

        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);
 
+

Contents

B.15 Boolean type and values <stdbool.h>

@@ -21220,12 +21897,14 @@ If a length modifier appears with any conversion specifier other than as specifi
        __bool_true_false_are_defined
 
+

Contents

B.16 Common definitions <stddef.h>

          ptrdiff_t       size_t            wchar_t           NULL
          offsetof(type, member-designator)
 
+

Contents

B.17 Integer types <stdint.h>

          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
 
+

Contents

B.18 Input/output <stdio.h>

@@ -21323,6 +22003,7 @@ If a length modifier appears with any conversion specifier other than as specifi void perror(const char *s); +

Contents

B.19 General utilities <stdlib.h>

@@ -21384,6 +22065,7 @@ If a length modifier appears with any conversion specifier other than as specifi const wchar_t * restrict pwcs, size_t n); +

Contents

B.20 String handling <string.h>

@@ -21420,6 +22102,7 @@ If a length modifier appears with any conversion specifier other than as specifi
          size_t strlen(const char *s);
 
+

Contents

B.21 Type-generic math <tgmath.h>

        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
 
+

Contents

B.22 Date and time <time.h>

@@ -21458,6 +22142,7 @@ If a length modifier appears with any conversion specifier other than as specifi
             const struct tm * restrict timeptr);
 
+

Contents

B.23 Extended multibyte/wide character utilities <wchar.h>

@@ -21567,6 +22252,7 @@ If a length modifier appears with any conversion specifier other than as specifi mbstate_t * restrict ps); +

Contents

B.24 Wide character classification and mapping utilities <wctype.h>

@@ -21592,6 +22278,7 @@ If a length modifier appears with any conversion specifier other than as specifi wctrans_t wctrans(const char *property); +

Contents

Annex C

                                      (informative)
@@ -21618,6 +22305,7 @@ If a length modifier appears with any conversion specifier other than as specifi
 
 
 
+

Contents

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, -
+
Greek: 0386, 0388-038A, 038C, 038E-03A1, 03A3-03CE, 03D0-03D6, 03DA, 03DC, 03DE, 03E0, 03E2-03F3, 1F00-1F15, 1F18-1F1D, 1F20-1F45, 1F48-1F4D, 1F50-1F57, 1F59, 1F5B, 1F5D, 1F5F-1F7D, 1F80-1FB4, 1FB6-1FBC, 1FC2-1FC4, 1FC6-1FCC, 1FD0-1FD3, 1FD6-1FDB, 1FE0-1FEC, 1FF2-1FF4, 1FF6-1FFC - - Cyrillic: 0401-040C, 040E-044F, 0451-045C, 045E-0481, 0490-04C4, -
+
Cyrillic: 0401-040C, 040E-044F, 0451-045C, 045E-0481, 0490-04C4, 04C7-04C8, 04CB-04CC, 04D0-04EB, 04EE-04F5, 04F8-04F9 - - Armenian: 0531-0556, 0561-0587 - Hebrew: 05B0-05B9, 05BB-05BD, 05BF, 05C1-05C2, 05D0-05EA, -
+
Armenian: 0531-0556, 0561-0587 +
Hebrew: 05B0-05B9, 05BB-05BD, 05BF, 05C1-05C2, 05D0-05EA, 05F0-05F2 - - Arabic: 0621-063A, 0640-0652, 0670-06B7, 06BA-06BE, 06C0-06CE, -
+
Arabic: 0621-063A, 0640-0652, 0670-06B7, 06BA-06BE, 06C0-06CE, 06D0-06DC, 06E5-06E8, 06EA-06ED - - Devanagari: 0901-0903, 0905-0939, 093E-094D, 0950-0952, 0958-0963 - Bengali: 0981-0983, 0985-098C, 098F-0990, 0993-09A8, 09AA-09B0, -
+
Devanagari: 0901-0903, 0905-0939, 093E-094D, 0950-0952, 0958-0963 +
Bengali: 0981-0983, 0985-098C, 098F-0990, 0993-09A8, 09AA-09B0, 09B2, 09B6-09B9, 09BE-09C4, 09C7-09C8, 09CB-09CD, 09DC-09DD, 09DF-09E3, 09F0-09F1 - - Gurmukhi: 0A02, 0A05-0A0A, 0A0F-0A10, 0A13-0A28, 0A2A-0A30, -
+
Gurmukhi: 0A02, 0A05-0A0A, 0A0F-0A10, 0A13-0A28, 0A2A-0A30, 0A32-0A33, 0A35-0A36, 0A38-0A39, 0A3E-0A42, 0A47-0A48, 0A4B-0A4D, 0A59-0A5C, 0A5E, 0A74 - - Gujarati: 0A81-0A83, 0A85-0A8B, 0A8D, 0A8F-0A91, 0A93-0AA8, -
+
Gujarati: 0A81-0A83, 0A85-0A8B, 0A8D, 0A8F-0A91, 0A93-0AA8, 0AAA-0AB0, 0AB2-0AB3, 0AB5-0AB9, 0ABD-0AC5, 0AC7-0AC9, 0ACB-0ACD, 0AD0, 0AE0 - - Oriya: 0B01-0B03, 0B05-0B0C, 0B0F-0B10, 0B13-0B28, 0B2A-0B30, +
Oriya: 0B01-0B03, 0B05-0B0C, 0B0F-0B10, 0B13-0B28, 0B2A-0B30, -
                    0B32-0B33, 0B36-0B39, 0B3E-0B43, 0B47-0B48, 0B4B-0B4D,
                  0B5C-0B5D, 0B5F-0B61
-
- Tamil: 0B82-0B83, 0B85-0B8A, 0B8E-0B90, 0B92-0B95, 0B99-0B9A, -
+
Tamil: 0B82-0B83, 0B85-0B8A, 0B8E-0B90, 0B92-0B95, 0B99-0B9A, 0B9C, 0B9E-0B9F, 0BA3-0BA4, 0BA8-0BAA, 0BAE-0BB5, 0BB7-0BB9, 0BBE-0BC2, 0BC6-0BC8, 0BCA-0BCD - - Telugu: 0C01-0C03, 0C05-0C0C, 0C0E-0C10, 0C12-0C28, 0C2A-0C33, -
+
Telugu: 0C01-0C03, 0C05-0C0C, 0C0E-0C10, 0C12-0C28, 0C2A-0C33, 0C35-0C39, 0C3E-0C44, 0C46-0C48, 0C4A-0C4D, 0C60-0C61 - - Kannada: 0C82-0C83, 0C85-0C8C, 0C8E-0C90, 0C92-0CA8, 0CAA-0CB3, -
+
Kannada: 0C82-0C83, 0C85-0C8C, 0C8E-0C90, 0C92-0CA8, 0CAA-0CB3, 0CB5-0CB9, 0CBE-0CC4, 0CC6-0CC8, 0CCA-0CCD, 0CDE, 0CE0-0CE1 - - Malayalam: 0D02-0D03, 0D05-0D0C, 0D0E-0D10, 0D12-0D28, 0D2A-0D39, -
+
Malayalam: 0D02-0D03, 0D05-0D0C, 0D0E-0D10, 0D12-0D28, 0D2A-0D39, 0D3E-0D43, 0D46-0D48, 0D4A-0D4D, 0D60-0D61 - - Thai: 0E01-0E3A, 0E40-0E5B - Lao: 0E81-0E82, 0E84, 0E87-0E88, 0E8A, 0E8D, 0E94-0E97, -
+
Thai: 0E01-0E3A, 0E40-0E5B +
Lao: 0E81-0E82, 0E84, 0E87-0E88, 0E8A, 0E8D, 0E94-0E97, 0E99-0E9F, 0EA1-0EA3, 0EA5, 0EA7, 0EAA-0EAB, 0EAD-0EAE, 0EB0-0EB9, 0EBB-0EBD, 0EC0-0EC4, 0EC6, 0EC8-0ECD, 0EDC-0EDD - - Tibetan: 0F00, 0F18-0F19, 0F35, 0F37, 0F39, 0F3E-0F47, 0F49-0F69, -
+
Tibetan: 0F00, 0F18-0F19, 0F35, 0F37, 0F39, 0F3E-0F47, 0F49-0F69, 0F71-0F84, 0F86-0F8B, 0F90-0F95, 0F97, 0F99-0FAD, 0FB1-0FB7, 0FB9 - - Georgian: 10A0-10C5, 10D0-10F6 - Hiragana: 3041-3093, 309B-309C - Katakana: 30A1-30F6, 30FB-30FC - Bopomofo: 3105-312C - CJK Unified Ideographs: 4E00-9FA5 - Hangul: AC00-D7A3 - Digits: 0660-0669, 06F0-06F9, 0966-096F, 09E6-09EF, 0A66-0A6F, -
+
Georgian: 10A0-10C5, 10D0-10F6 +
Hiragana: 3041-3093, 309B-309C +
Katakana: 30A1-30F6, 30FB-30FC +
Bopomofo: 3105-312C +
CJK Unified Ideographs: 4E00-9FA5 +
Hangul: AC00-D7A3 +
Digits: 0660-0669, 06F0-06F9, 0966-096F, 09E6-09EF, 0A66-0A6F, 0AE6-0AEF, 0B66-0B6F, 0BE7-0BEF, 0C66-0C6F, 0CE6-0CEF, 0D66-0D6F, 0E50-0E59, 0ED0-0ED9, 0F20-0F33 - - Special characters: 00B5, 00B7, 02B0-02B8, 02BB, 02BD-02C1, 02D0-02D1, +
Special characters: 00B5, 00B7, 02B0-02B8, 02BB, 02BD-02C1, 02D0-02D1, -
                     02E0-02E4, 037A, 0559, 093D, 0B3D, 1FBE, 203F-2040, 2102,
                     2107, 210A-2113, 2115, 2118-211D, 2124, 2126, 2128, 212A-2131,
                     2133-2138, 2160-2182, 3005-3007, 3021-3029
-
+
+

Contents

Annex E

                                     (informative)
@@ -21816,12 +22473,14 @@ If a length modifier appears with any conversion specifier other than as specifi
         #define    LDBL_MIN                                  1E-37
 
+

Contents

Annex F

                                            (normative)
                        IEC 60559 floating-point arithmetic
 
+

Contents

F.1 Introduction

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. +

Contents

F.2 Types

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. +

Contents

F.2.1 Infinities, signed zeros, and NaNs

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. +

Contents

F.3 Operators and functions

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). +

Contents

F.4 Floating to integer conversion

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>. +

Contents

F.5 Binary-decimal conversion

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.) +

Contents

F.6 Contracted expressions

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). +

Contents

F.7 Floating-point environment

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. +

Contents

F.7.1 Environment management

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). +

Contents

F.7.2 Translation

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. +

Contents

F.7.3 Execution

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

  • Trapping or stopping (if supported) is disabled on all floating-point exceptions. +

    Contents

    F.7.4 Constant expressions

    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

  • +

    Contents

    F.7.5 Initialization

    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. +

    Contents

    F.7.6 Changing the environment

    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''. +

    Contents

    F.8 Optimization

    This section identifies code transformations that might subvert IEC 60559-specified behavior, and others that do not. +

    Contents

    F.8.1 Global transformations

    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;

    +

    Contents

    F.8.2 Expression transformations

    - 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 -
    +
     1 * x and x / 1 -> x    
    The expressions 1 * x, x / 1, and x are equivalent (on IEC 60559 machines, among others).317) - - x / x -> 1.0 The expressions x / x and 1.0 are not equivalent if x -
    +
     x / x -> 1.0            
    The expressions x / x and 1.0 are not equivalent if x can be zero, infinite, or NaN. - - x - y <-> x + (-y) The expressions x - y, x + (-y), and (-y) + x -
    +
     x - y <-> x + (-y)   
    The expressions x - y, x + (-y), and (-y) + x are equivalent (on IEC 60559 machines, among others). - - x - y <-> -(y - x) The expressions x - y and -(y - x) are not -
    +
     x - y <-> -(y - x)   
    The expressions x - y and -(y - x) are not equivalent because 1 - 1 is +0 but -(1 - 1) is -0 (in the default rounding direction).318) - - x - x -> 0.0 The expressions x - x and 0.0 are not equivalent if -
    +
     x - x -> 0.0            
    The expressions x - x and 0.0 are not equivalent if x is a NaN or infinite. - - 0 * x -> 0.0 The expressions 0 * x and 0.0 are not equivalent if -
    +
     0 * x -> 0.0            
    The expressions 0 * x and 0.0 are not equivalent if x is a NaN, infinite, or -0. - - x + 0->x The expressions x + 0 and x are not equivalent if x is -
    +
     x + 0 -> x              
    The expressions x + 0 and x are not equivalent if x is -0, because (-0) + (+0) yields +0 (in the default rounding direction), not -0. - - x - 0->x (+0) - (+0) yields -0 when rounding is downward -
    +
     x - 0 -> x              
    (+0) - (+0) yields -0 when rounding is downward (toward -(inf)), but +0 otherwise, and (-0) - (+0) always yields -0; so, if the state of the FENV_ACCESS pragma is ''off'', promising default rounding, then the implementation can replace x - 0 by x, even if x - - - -
                                               might be zero.
    -
    - -x <-> 0 - x The expressions -x and 0 - x are not equivalent if x -
    +
     -x <-> 0 - x         
    The expressions -x and 0 - x are not equivalent if x is +0, because -(+0) yields -0, but 0 - (+0) yields +0 (unless rounding is downward). - +

    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. +

    Contents

    F.8.3 Relational operators

    - 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''. - +
    The sense of relational operators shall be maintained. This includes handling unordered cases as expressed by the source code.

    @@ -22347,6 +23001,7 @@ If a length modifier appears with any conversion specifier other than as specifi

    +

    Contents

    F.8.4 Constant arithmetic

    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. +

    Contents

    F.9 Mathematics <math.h>

    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. +

    Contents

    F.9.1 Trigonometric functions

    +

    Contents

    F.9.1.1 The acos functions

    +

    Contents

    F.9.1.2 The asin functions

    +

    Contents

    F.9.1.3 The atan functions

    +

    Contents

    F.9.1.4 The atan2 functions

    +

    Contents

    F.9.3.5 The ilogb functions

    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. +

    Contents

    F.9.3.6 The ldexp functions

    On a binary system, ldexp(x, exp) is equivalent to scalbn(x, exp). +

    Contents

    F.9.3.7 The log functions

    +

    Contents

    F.9.3.8 The log10 functions

    +

    Contents

    F.9.3.9 The log1p functions

    +

    Contents

    F.9.3.10 The log2 functions

    +

    Contents

    F.9.3.11 The logb functions

    +

    Contents

    F.9.3.12 The modf functions

    +

    Contents

    F.9.3.13 The scalbn and scalbln functions

    +

    Contents

    F.9.4 Power and absolute value functions

    +

    Contents

    F.9.4.1 The cbrt functions

    +

    Contents

    F.9.4.2 The fabs functions

    +

    Contents

    F.9.4.3 The hypot functions

    +

    Contents

    F.9.4.4 The pow functions

    +

    Contents

    F.9.4.5 The sqrt functions

    sqrt is fully specified as a basic arithmetic operation in IEC 60559. +

    Contents

    F.9.5 Error and gamma functions

    +

    Contents

    F.9.5.1 The erf functions

    +

    Contents

    F.9.5.2 The erfc functions

    +

    Contents

    F.9.5.3 The lgamma functions

    +

    Contents

    F.9.5.4 The tgamma functions

    +

    Contents

    F.9.6 Nearest integer functions

    +

    Contents

    F.9.6.1 The ceil functions

    +

    Contents

    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 +

    Contents

    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: +

    Contents

    J.3.1 Translation

    +

    Contents

    J.3.2 Environment

    +

    Contents

    J.3.3 Identifiers

    +

    Contents

    J.3.4 Characters

    +

    Contents

    J.3.5 Integers

    +

    Contents

    J.3.6 Floating point

    +

    Contents

    J.3.7 Arrays and pointers

    +

    Contents

    J.3.8 Hints

    +

    Contents

    J.3.9 Structures, unions, enumerations, and bit-fields

    +

    Contents

    J.3.10 Qualifiers

    +

    Contents

    J.3.11 Preprocessing directives

    +

    Contents

    J.3.12 Library functions

    +

    Contents

    J.3.13 Architecture

    +

    Contents

    J.4 Locale-specific behavior

    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 +

    Contents

    J.5 Common extensions

    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. +

    Contents

    J.5.1 Environment arguments

    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). +

    Contents

    J.5.2 Specialized identifiers

    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). +

    Contents

    J.5.3 Lengths and cases of identifiers

    All characters in identifiers (with or without external linkage) are significant (6.4.2). +

    Contents

    J.5.4 Scopes of identifiers

    A function identifier, or the identifier of an object the declaration of which contains the keyword extern, has file scope (6.2.1). +

    Contents

    J.5.5 Writable string literals

    String literals are modifiable (in which case, identical string literals should denote distinct objects) (6.4.5). +

    Contents

    J.5.6 Other arithmetic types

    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. +

    Contents

    J.5.7 Function pointer casts

    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). +

    Contents

    J.5.8 Extended bit-field types

    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). +

    Contents

    J.5.9 The fortran keyword

    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). +

    Contents

    J.5.10 The asm keyword

    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 ); +

    Contents

    J.5.11 Multiple external definitions

    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). +

    Contents

    J.5.12 Predefined macro names

    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). +

    Contents

    J.5.13 Floating-point status flags

    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, +

    Contents

    J.5.14 Extra arguments for signal handlers

    Handlers for specific signals are called with extra arguments in addition to the signal number (7.14.1.1). +

    Contents

    J.5.15 Additional stream types and file-opening modes

    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). +

    Contents

    J.5.16 Defined file position indicator

    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). +

    Contents

    J.5.17 Math error reporting

    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). +

    Contents

    Bibliography

    1. ''The C Reference Manual'' by Dennis M. Ritchie, a version of which was @@ -24974,11 +25785,12 @@ If a length modifier appears with any conversion specifier other than as specifi
    +

    Contents

    Index

    - ??? 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
     
    +

    Contents