Programming languages — C
N1570
Committee Draft -- April 12, 2011 ISO/IEC 9899:201x
INTERNATIONAL STANDARD
?ISO/IEC
ISO/IEC 9899:201x
Programming languages -- C
ABSTRACT
(Cover sheet to be provided by ISO Secretariat.)
This International Standard specifies the form and establishes the interpretation of programs expressed in the programming language C. Its purpose is to promote portability, reliability, maintainability, and efficient execution of C language programs on a variety of computing systems.
Clauses are included that detail the C language itself and the contents of the C language execution library. Annexes summarize aspects of both of them, and enumerate factors that influence the portability of C programs.
Although this International Standard is intended to guide knowledgeable C language programmers as well as implementors of C language translation systems, the document itself is not designed to serve as a tutorial.
Recipients of this draft are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.
Changes from the previous draft (N1539) are indicated by ``diff marks'' in the right margin: deleted text is marked with ``'', new or changed text with `` ''.
Abstract
i
ISO/IEC 9899:201x Committee Draft -- April 12, 2011
N1570
ii
N1570
Committee Draft -- April 12, 2011 ISO/IEC 9899:201x
Contents
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Normative references . . . . . . . . . . . . . . . . . . . . . . . 2
3. Terms, definitions, and symbols . . . . . . . . . . . . . . . . . . . 3
4. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5. Environment . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.1 Conceptual models . . . . . . . . . . . . . . . . . . . . . 10 5.1.1 Translation environment . . . . . . . . . . . . . . . . 10 5.1.2 Execution environments . . . . . . . . . . . . . . . . 12 5.2 Environmental considerations . . . . . . . . . . . . . . . . . 22 5.2.1 Character sets . . . . . . . . . . . . . . . . . . . . 22 5.2.2 Character display semantics . . . . . . . . . . . . . . 24 5.2.3 Signals and interrupts . . . . . . . . . . . . . . . . . 25 5.2.4 Environmental limits . . . . . . . . . . . . . . . . . 25
6. Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.1 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.2 Concepts . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.2.1 Scopes of identifiers . . . . . . . . . . . . . . . . . 35 6.2.2 Linkages of identifiers . . . . . . . . . . . . . . . . . 36 6.2.3 Name spaces of identifiers . . . . . . . . . . . . . . . 37 6.2.4 Storage durations of objects . . . . . . . . . . . . . . 38 6.2.5 Types . . . . . . . . . . . . . . . . . . . . . . . 39 6.2.6 Representations of types . . . . . . . . . . . . . . . . 44 6.2.7 Compatible type and composite type . . . . . . . . . . . 47 6.2.8 Alignment of objects . . . . . . . . . . . . . . . . . 48 6.3 Conversions . . . . . . . . . . . . . . . . . . . . . . . . 50 6.3.1 Arithmetic operands . . . . . . . . . . . . . . . . . 50 6.3.2 Other operands . . . . . . . . . . . . . . . . . . . 54 6.4 Lexical elements . . . . . . . . . . . . . . . . . . . . . . 57 6.4.1 Keywords . . . . . . . . . . . . . . . . . . . . . . 58 6.4.2 Identifiers . . . . . . . . . . . . . . . . . . . . . . 59 6.4.3 Universal character names . . . . . . . . . . . . . . . 61 6.4.4 Constants . . . . . . . . . . . . . . . . . . . . . . 62 6.4.5 String literals . . . . . . . . . . . . . . . . . . . . 70 6.4.6 Punctuators . . . . . . . . . . . . . . . . . . . . . 72 6.4.7 Header names . . . . . . . . . . . . . . . . . . . . 73 6.4.8 Preprocessing numbers . . . . . . . . . . . . . . . . 74 6.4.9 Comments . . . . . . . . . . . . . . . . . . . . . 75
Contents
iii
ISO/IEC 9899:201x Committee Draft -- April 12, 2011
N1570
6.5 Expressions . . . . . . . . . . . . . . . . . . . . . . . . 76 6.5.1 Primary expressions . . . . . . . . . . . . . . . . . 78 6.5.2 Postfix operators . . . . . . . . . . . . . . . . . . . 79 6.5.3 Unary operators . . . . . . . . . . . . . . . . . . . 88 6.5.4 Cast operators . . . . . . . . . . . . . . . . . . . . 91 6.5.5 Multiplicative operators . . . . . . . . . . . . . . . . 92 6.5.6 Additive operators . . . . . . . . . . . . . . . . . . 92 6.5.7 Bitwise shift operators . . . . . . . . . . . . . . . . . 94 6.5.8 Relational operators . . . . . . . . . . . . . . . . . . 95 6.5.9 Equality operators . . . . . . . . . . . . . . . . . . 96 6.5.10 Bitwise AND operator . . . . . . . . . . . . . . . . . 97 6.5.11 Bitwise exclusive OR operator . . . . . . . . . . . . . 98 6.5.12 Bitwise inclusive OR operator . . . . . . . . . . . . . . 98 6.5.13 Logical AND operator . . . . . . . . . . . . . . . . . 99 6.5.14 Logical OR operator . . . . . . . . . . . . . . . . . 99 6.5.15 Conditional operator . . . . . . . . . . . . . . . . . 100 6.5.16 Assignment operators . . . . . . . . . . . . . . . . . 101 6.5.17 Comma operator . . . . . . . . . . . . . . . . . . . 105
6.6 Constant expressions . . . . . . . . . . . . . . . . . . . . . 106 6.7 Declarations . . . . . . . . . . . . . . . . . . . . . . . . 108
6.7.1 Storage-class specifiers . . . . . . . . . . . . . . . . 109 6.7.2 Type specifiers . . . . . . . . . . . . . . . . . . . . 111 6.7.3 Type qualifiers . . . . . . . . . . . . . . . . . . . . 121 6.7.4 Function specifiers . . . . . . . . . . . . . . . . . . 125 6.7.5 Alignment specifier . . . . . . . . . . . . . . . . . . 127 6.7.6 Declarators . . . . . . . . . . . . . . . . . . . . . 128 6.7.7 Type names . . . . . . . . . . . . . . . . . . . . . 136 6.7.8 Type definitions . . . . . . . . . . . . . . . . . . . 137 6.7.9 Initialization . . . . . . . . . . . . . . . . . . . . 139 6.7.10 Static assertions . . . . . . . . . . . . . . . . . . . 145 6.8 Statements and blocks . . . . . . . . . . . . . . . . . . . . 146 6.8.1 Labeled statements . . . . . . . . . . . . . . . . . . 146 6.8.2 Compound statement . . . . . . . . . . . . . . . . . 147 6.8.3 Expression and null statements . . . . . . . . . . . . . 147 6.8.4 Selection statements . . . . . . . . . . . . . . . . . 148 6.8.5 Iteration statements . . . . . . . . . . . . . . . . . . 150 6.8.6 Jump statements . . . . . . . . . . . . . . . . . . . 151 6.9 External definitions . . . . . . . . . . . . . . . . . . . . . 155 6.9.1 Function definitions . . . . . . . . . . . . . . . . . . 156 6.9.2 External object definitions . . . . . . . . . . . . . . . 158 6.10 Preprocessing directives . . . . . . . . . . . . . . . . . . . 160 6.10.1 Conditional inclusion . . . . . . . . . . . . . . . . . 162 6.10.2 Source file inclusion . . . . . . . . . . . . . . . . . 164 6.10.3 Macro replacement . . . . . . . . . . . . . . . . . . 166
iv
Contents
N1570
Committee Draft -- April 12, 2011 ISO/IEC 9899:201x
6.10.4 Line control . . . . . . . . . . . . . . . . . . . . . 173 6.10.5 Error directive . . . . . . . . . . . . . . . . . . . . 174 6.10.6 Pragma directive . . . . . . . . . . . . . . . . . . . 174 6.10.7 Null directive . . . . . . . . . . . . . . . . . . . . 175 6.10.8 Predefined macro names . . . . . . . . . . . . . . . . 175 6.10.9 Pragma operator . . . . . . . . . . . . . . . . . . . 178 6.11 Future language directions . . . . . . . . . . . . . . . . . . 179 6.11.1 Floating types . . . . . . . . . . . . . . . . . . . . 179 6.11.2 Linkages of identifiers . . . . . . . . . . . . . . . . . 179 6.11.3 External names . . . . . . . . . . . . . . . . . . . 179 6.11.4 Character escape sequences . . . . . . . . . . . . . . 179 6.11.5 Storage-class specifiers . . . . . . . . . . . . . . . . 179 6.11.6 Function declarators . . . . . . . . . . . . . . . . . 179 6.11.7 Function definitions . . . . . . . . . . . . . . . . . . 179 6.11.8 Pragma directives . . . . . . . . . . . . . . . . . . 179 6.11.9 Predefined macro names . . . . . . . . . . . . . . . . 179
7. Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 180 7.1.1 Definitions of terms . . . . . . . . . . . . . . . . . . 180 7.1.2 Standard headers . . . . . . . . . . . . . . . . . . . 181 7.1.3 Reserved identifiers . . . . . . . . . . . . . . . . . . 182 7.1.4 Use of library functions . . . . . . . . . . . . . . . . 183 7.2 Diagnostics . . . . . . . . . . . . . . . . . . 186 7.2.1 Program diagnostics . . . . . . . . . . . . . . . . . 186 7.3 Complex arithmetic . . . . . . . . . . . . . . 188 7.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . 188 7.3.2 Conventions . . . . . . . . . . . . . . . . . . . . . 189 7.3.3 Branch cuts . . . . . . . . . . . . . . . . . . . . . 189 7.3.4 The CX_LIMITED_RANGE pragma . . . . . . . . . . . 189 7.3.5 Trigonometric functions . . . . . . . . . . . . . . . . 190 7.3.6 Hyperbolic functions . . . . . . . . . . . . . . . . . 192 7.3.7 Exponential and logarithmic functions . . . . . . . . . . 194 7.3.8 Power and absolute-value functions . . . . . . . . . . . 195 7.3.9 Manipulation functions . . . . . . . . . . . . . . . . 196 7.4 Character handling . . . . . . . . . . . . . . . . 200 7.4.1 Character classification functions . . . . . . . . . . . . 200 7.4.2 Character case mapping functions . . . . . . . . . . . . 203 7.5 Errors . . . . . . . . . . . . . . . . . . . . . 205 7.6 Floating-point environment . . . . . . . . . . . . . 206 7.6.1 The FENV_ACCESS pragma . . . . . . . . . . . . . . 208 7.6.2 Floating-point exceptions . . . . . . . . . . . . . . . 209 7.6.3 Rounding . . . . . . . . . . . . . . . . . . . . . . 212 7.6.4 Environment . . . . . . . . . . . . . . . . . . . . 213 7.7 Characteristics of floating types . . . . . . . . . . . 216
Contents
v
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related searches
- programming languages and their uses
- top programming languages 2019
- scientific programming languages ranking
- computer programming languages pdf
- history of programming languages timeline
- history of programming languages book
- programming languages history pdf
- all programming languages pdf books
- programming languages trends
- programming languages trend 2020
- most used programming languages 2019
- top programming languages tiobe