
WG14/N1336Committee Draft — August 11, 2008ISO/IEC9899:201xCISO/IECINTERNATIONALSTANDARDISO/IEC9899:201xProgramminglanguagesCABSTRACT(CoversheettobeprovidedbyISOSecretariat.)This International Standard specifies the form and establishes the interpretation ofprograms expressed in the programming language C.Its purpose is to promoteportability,reliability,maintainability,and eficient execution of C language programs onavarietyofcomputingsystems.Clauses are included that detail the C language itself and the contents of the C languageexecution library.Annexes summarize aspects of both of them, and enumerate factorsthat influence the portability of C programs.Although this International Standard is intended to guide knowledgeable C languageprogrammers as well as implementors of C language translation systems, the documentitself is not designed to serve as a tutorial.Recipients of this draft are invited to submit, with their comments, notification of anyrelevant patent rights of which they are aware and to provide supporting documentationAbstract
WG14/N1336 Committee Draft — August 11, 2008 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 asatutorial. 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. Abstract i

WG14/N1336Committee Draft August 11, 2008ISO/IEC9899:201xContentsForewordxiIntroductionxiv11. Scope22. Normative references33. Terms, definitions, and symbols74.Conformance95.Environment95.1Conceptual models95.1.1Translation environment115.1.2Execution environments175.2Environmental considerations175.2.1Character sets195.2.2Character display semantics205.2.3Signals and interrupts5.2.420Environmental limits296.Language296.1Notation296.2Concepts296.2.1Scopes of identifiers306.2.2Linkages of identifiers316.2.3Namespacesofidentifiers326.2.4Storage durations of objects336.2.5Types6.2.637Representations of types6.2.740Compatible type and composite type426.3Conversions426.3.1Arithmetic operands466.3.2Otheroperands496.4Lexical elements506.4.1Keywords516.4.2Identifiers536.4.3Universal character names546.4.4Constants626.4.5String literals636.4.6Punctuators646.4.7Header names656.4.8Preprocessing numbers666.4.9Comments676.5ExpressionsiliContents
WG14/N1336 Committee Draft — August 11, 2008 ISO/IEC 9899:201x Contents Foreword . xi Introduction . xiv 1. Scope . 1 2. Normative references . 2 3. Terms, definitions, and symbols . 3 4. Conformance . 7 5. Environment . 9 5.1 Conceptual models . 9 5.1.1 Translation environment . 9 5.1.2 Execution environments . 11 5.2 Environmental considerations . 17 5.2.1 Character sets . 17 5.2.2 Character display semantics . 19 5.2.3 Signals and interrupts . 20 5.2.4 Environmental limits . 20 6. Language . 29 6.1 Notation . 29 6.2 Concepts . 29 6.2.1 Scopes of identifiers . 29 6.2.2 Linkages of identifiers . 30 6.2.3 Name spaces of identifiers . 31 6.2.4 Storage durations of objects . 32 6.2.5 Types . 33 6.2.6 Representations of types . 37 6.2.7 Compatible type and composite type . 40 6.3 Conversions . 42 6.3.1 Arithmetic operands . 42 6.3.2 Other operands . 46 6.4 Lexical elements . 49 6.4.1 Keywords . 50 6.4.2 Identifiers . 51 6.4.3 Universal character names . 53 6.4.4 Constants . 54 6.4.5 String literals . 62 6.4.6 Punctuators . 63 6.4.7 Header names . 64 6.4.8 Preprocessing numbers . 65 6.4.9 Comments . 66 6.5 Expressions . 67 Contents iii

ISO/IEC9899:201xCommittee Draft August 11, 2008WG14/N13366.5.169Primary expressions6.5.269Postfix operators786.5.3Unary operators816.5.4Castoperators826.5.5Multiplicativeoperators826.5.6Additive operators846.5.7Bitwise shift operators6.5.885Relational operators6.5.986Equality operators876.5.10Bitwise AND operator886.5.11Bitwiseexclusive ORoperator886.5.12BitwiseinclusiveORoperator896.5.13Logical AND operator896.5.14Logical OR operator6.5.1590Conditional operator916.5.16Assignment operators946.5.17Comma operator956.6Constant expressions976.7Declarations986.7.1Storage-class specifiers996.7.2Type specifiers6.7.3108Type qualifiers6.7.4112Function specifiers1146.7.5Declarators6.7.6122Type names6.7.7123Type definitions6.7.8125Initialization6.8131Statements and blocks6.8.1131Labeled statements6.8.2132Compound statement1326.8.3Expression and null statements6.8.4133Selection statements6.8.5135Iteration statements6.8.6136Jumpstatements6.9140External definitions1416.9.1Function definitions6.9.2143External object definitions1456.10 Preprocessing directives1476.10.1Conditional inclusion1496.10.2Sourcefileinclusion6.10.3151Macro replacement1586.10.4Line control6.10.5159Error directive1596.10.6Pragma directiveivContents
ISO/IEC 9899:201x Committee Draft — August 11, 2008 WG14/N1336 6.5.1 Primary expressions . 69 6.5.2 Postfix operators . 69 6.5.3 Unary operators . 78 6.5.4 Cast operators . 81 6.5.5 Multiplicative operators . 82 6.5.6 Additive operators . 82 6.5.7 Bitwise shift operators . 84 6.5.8 Relational operators . 85 6.5.9 Equality operators . 86 6.5.10 Bitwise AND operator . 87 6.5.11 Bitwise exclusive OR operator . 88 6.5.12 Bitwise inclusive OR operator . 88 6.5.13 Logical AND operator . 89 6.5.14 Logical OR operator . 89 6.5.15 Conditional operator . 90 6.5.16 Assignment operators . 91 6.5.17 Comma operator . 94 6.6 Constant expressions . 95 6.7 Declarations . 97 6.7.1 Storage-class specifiers . 98 6.7.2 Type specifiers . 99 6.7.3 Type qualifiers . 108 6.7.4 Function specifiers . 112 6.7.5 Declarators . 114 6.7.6 Type names . 122 6.7.7 Type definitions . 123 6.7.8 Initialization . 125 6.8 Statements and blocks . 131 6.8.1 Labeled statements . 131 6.8.2 Compound statement . 132 6.8.3 Expression and null statements . 132 6.8.4 Selection statements . 133 6.8.5 Iteration statements . 135 6.8.6 Jump statements . 136 6.9 External definitions . 140 6.9.1 Function definitions . 141 6.9.2 External object definitions . 143 6.10 Preprocessing directives . 145 6.10.1 Conditional inclusion . 147 6.10.2 Source file inclusion . 149 6.10.3 Macro replacement . 151 6.10.4 Line control . 158 6.10.5 Error directive . 159 6.10.6 Pragma directive . 159 iv Contents

WG14/N1336Committee Draft — August 11, 2008ISO/IEC9899:201x1606.10.7Null directive1606.10.8Predefinedmacronames1616.10.9Pragma operator1636.11 Future language directions1636.11.1Floatingtypes1636.11.2Linkages of identifiers1636.11.3Externalnames1636.11.4Character escape sequences1636.11.5Storage-class specifiers1636.11.6Function declarators1636.11.7Function definitions1636.11.8Pragma directives1636.11.9Predefined macro names1647. Library1647.1Introduction1647.1.1Definitions of terms1657.1.2Standard headers7.1.3166Reserved identifiers1667.1.4Use of library functions7.2169Diagnostics7.2.1169Program diagnostics1707.3Complex arithmetic1707.3.1Introduction1717.3.2Conventions7.3.3171Branch cuts7.3.4171TheCX LIMITED RANGEpragma7.3.5172Trigonometric functions1747.3.6Hyperbolic functions7.3.7176Exponential and logarithmic functions7.3.8177Power and absolute-value functions7.3.9178Manipulation functions1817.4Character handling1817.4.1Character classification functions7.4.2184Character case mapping functions1867.5Errors1877.6Floating-pointenvironment1897.6.1TheFENV_ACCESSpragma7.6.2190Floating-point exceptions1937.6.3Rounding1947.6.4Environment7.7197Characteristics offloatingtypes7.8198Format conversion of integertypes1987.8.1Macrosforformat specifiers1997.8.2Functions for greatest-width integer typesContentsv
WG14/N1336 Committee Draft — August 11, 2008 ISO/IEC 9899:201x 6.10.7 Null directive . 160 6.10.8 Predefined macro names . 160 6.10.9 Pragma operator . 161 6.11 Future language directions . 163 6.11.1 Floating types . 163 6.11.2 Linkages of identifiers . 163 6.11.3 External names . 163 6.11.4 Character escape sequences . 163 6.11.5 Storage-class specifiers . 163 6.11.6 Function declarators . 163 6.11.7 Function definitions . 163 6.11.8 Pragma directives . 163 6.11.9 Predefined macro names . 163 7. Library . 164 7.1 Introduction . 164 7.1.1 Definitions of terms . 164 7.1.2 Standard headers . 165 7.1.3 Reserved identifiers . 166 7.1.4 Use of library functions . 166 7.2 Diagnostics . 169 7.2.1 Program diagnostics . 169 7.3 Complex arithmetic . 170 7.3.1 Introduction . 170 7.3.2 Conventions . 171 7.3.3 Branch cuts . 171 7.3.4 The CX_LIMITED_RANGE pragma . 171 7.3.5 Trigonometric functions . 172 7.3.6 Hyperbolic functions . 174 7.3.7 Exponential and logarithmic functions . 176 7.3.8 Power and absolute-value functions . 177 7.3.9 Manipulation functions . 178 7.4 Character handling . 181 7.4.1 Character classification functions . 181 7.4.2 Character case mapping functions . 184 7.5 Errors . 186 7.6 Floating-point environment . 187 7.6.1 The FENV_ACCESS pragma . 189 7.6.2 Floating-point exceptions . 190 7.6.3 Rounding . 193 7.6.4 Environment . 194 7.7 Characteristics of floating types . 197 7.8 Format conversion of integer types . 198 7.8.1 Macros for format specifiers . 198 7.8.2 Functions for greatest-width integer types . 199 Contents v

ISO/IEC9899:201xCommittee Draft — August 11, 2008WG14/N13367.9Alternativespellings2022037.10 Sizesof integertypes2047.11 Localization2057.11.1 Locale control2067.11.2Numeric formatting convention inquiry2127.12Mathematics2147.12.1Treatmentoferrorconditions7.12.2215TheFP CONTRACTpragma7.12.3216Classificationmacros7.12.4218Trigonometricfunctions7.12.5221Hyperbolic functions2237.12.6Exponential and logarithmic functions2287.12.7Power and absolute-value functions2307.12.8Error and gamma functions2317.12.9Nearest integer functions2357.12.10 Remainder functions2367.12.11 Manipulation functions2387.12.12 Maximum, minimum, and positive difference functions2397.12.13 Floating multiply-add2407.12.14Comparisonmacros2437.13 Nonlocal jumps2437.13.1Save calling environment2447.13.2Restore calling environment2467.14 Signal handling2477.14.1 Specify signal handling2487.14.2 Send signal2497.15Variablearguments2497.15.1Variable argument listaccess macros2537.16 Boolean type and values2547.17Commondefinitions2557.18 Integertypes2557.18.1Integer types7.18.2257Limits of specified-width integer types2597.18.3Limits of other integer types2607.18.4Macros for integer constants2627.19Input/output2627.19.1Introduction7.19.2264Streams7.19.3266Files2687.19.4Operations on files7.19.5270File access functions2747.19.6Formatted input/outputfunctions7.19.7296Character input/output functions3017.19.8Direct input/output functionsviContents
ISO/IEC 9899:201x Committee Draft — August 11, 2008 WG14/N1336 7.9 Alternative spellings . 202 7.10 Sizes of integer types . 203 7.11 Localization . 204 7.11.1 Locale control . 205 7.11.2 Numeric formatting convention inquiry . 206 7.12 Mathematics . 212 7.12.1 Treatment of error conditions . 214 7.12.2 The FP_CONTRACT pragma . 215 7.12.3 Classification macros . 216 7.12.4 Trigonometric functions . 218 7.12.5 Hyperbolic functions . 221 7.12.6 Exponential and logarithmic functions . 223 7.12.7 Power and absolute-value functions . 228 7.12.8 Error and gamma functions . 230 7.12.9 Nearest integer functions . 231 7.12.10 Remainder functions . 235 7.12.11 Manipulation functions . 236 7.12.12 Maximum, minimum, and positive difference functions . 238 7.12.13 Floating multiply-add . 239 7.12.14 Comparison macros . 240 7.13 Nonlocal jumps . 243 7.13.1 Save calling environment . 243 7.13.2 Restore calling environment . 244 7.14 Signal handling . 246 7.14.1 Specify signal handling . 247 7.14.2 Send signal . 248 7.15 Variable arguments . 249 7.15.1 Variable argument list access macros . 249 7.16 Boolean type and values . 253 7.17 Common definitions . 254 7.18 Integer types . 255 7.18.1 Integer types . 255 7.18.2 Limits of specified-width integer types . 257 7.18.3 Limits of other integer types . 259 7.18.4 Macros for integer constants . 260 7.19 Input/output . 262 7.19.1 Introduction . 262 7.19.2 Streams . 264 7.19.3 Files . 266 7.19.4 Operations on files . 268 7.19.5 File access functions . 270 7.19.6 Formatted input/output functions . 274 7.19.7 Character input/output functions . 296 7.19.8 Direct input/output functions . 301 vi Contents

WG14/N1336Committee Draft August 11, 2008ISO/IEC9899:201x3027.19.9Filepositioningfunctions3047.19.10 Error-handling functions3067.20General utilities3077.20.1 Numeric conversion functions3127.20.2Pseudo-random sequence generation functions3137.20.3Memory management functions3157.20.4Communicationwiththeenvironment7.20.5318Searching and sorting utilities3207.20.6Integer arithmetic functions3217.20.7Multibyte/widecharacterconversionfunctions3237.20.8Multibyte/widestring conversionfunctions3257.21String handling3257.21.1String function conventions3257.21.2Copying functions3277.21.3Concatenation functions3287.21.4Comparisonfunctions7.21.5330Search functions3337.21.6Miscellaneousfunctions3357.22 Type-genericmath3387.23 Date and time3387.23.1 Componentsoftime3397.23.2Timemanipulation functions3417.23.3Timeconversionfunctions3487.24 Extended multibyte and wide character utilities3487.24.1 Introduction7.24.2349Formattedwidecharacterinput/outputfunctions3677.24.3Widecharacterinput/output functions3717.24.4General wide string utilities7.24.5385Wide character time conversion functions3867.24.6Extendedmultibyte/wide characterconversion utilities3937.25Widecharacterclassificationandmappingutilities3937.25.1Introduction3947.25.2Wide character classification utilities3997.25.3Wide character case mapping utilities4017.26 Future library directions4017.26.1Complexarithmetic7.26.2401Character handling4017.26.3Errors4017.26.4Formatconversion of integertypes4017.26.5Localization7.26.6401Signal handling4017.26.7Boolean type and values4017.26.8Integertypes4027.26.9Input/output Contentsvii
WG14/N1336 Committee Draft — August 11, 2008 ISO/IEC 9899:201x 7.19.9 File positioning functions . 302 7.19.10 Error-handling functions . 304 7.20 General utilities . 306 7.20.1 Numeric conversion functions . 307 7.20.2 Pseudo-random sequence generation functions . 312 7.20.3 Memory management functions . 313 7.20.4 Communication with the environment . 315 7.20.5 Searching and sorting utilities . 318 7.20.6 Integer arithmetic functions . 320 7.20.7 Multibyte/wide character conversion functions . 321 7.20.8 Multibyte/wide string conversion functions . 323 7.21 String handling . 325 7.21.1 String function conventions . 325 7.21.2 Copying functions . 325 7.21.3 Concatenation functions . 327 7.21.4 Comparison functions . 328 7.21.5 Search functions . 330 7.21.6 Miscellaneous functions . 333 7.22 Type-generic math . 335 7.23 Date and time . 338 7.23.1 Components of time . 338 7.23.2 Time manipulation functions . 339 7.23.3 Time conversion functions . 341 7.24 Extended multibyte and wide character utilities . 348 7.24.1 Introduction . 348 7.24.2 Formatted wide character input/output functions . 349 7.24.3 Wide character input/output functions . 367 7.24.4 General wide string utilities . 371 7.24.5 Wide character time conversion functions . 385 7.24.6 Extended multibyte/wide character conversion utilities . 386 7.25 Wide character classification and mapping utilities . 393 7.25.1 Introduction . 393 7.25.2 Wide character classification utilities . 394 7.25.3 Wide character case mapping utilities . 399 7.26 Future library directions . 401 7.26.1 Complex arithmetic . 401 7.26.2 Character handling . 401 7.26.3 Errors . 401 7.26.4 Format conversion of integer types . 401 7.26.5 Localization . 401 7.26.6 Signal handling . 401 7.26.7 Boolean type and values . 401 7.26.8 Integer types . 401 7.26.9 Input/output . 402 Contents vii

ISO/IEC9899:201xCommittee Draft — August 11, 2008WG14/N13364027.26.10 General utilities4027.26.11 Stringhandling7.26.12Extendedmultibyteand widecharacterutilities4027.26.13Wide characterclassification andmappingutilities402403AnnexA(informative)Languagesyntaxsummary403A.1 Lexical grammar409A.2Phrase structuregrammar416A.3Preprocessingdirectives419AnnexB(informative)Library summary419B.1DiagnosticsB.2419ComplexB.3421CharacterhandlingB.4421Errors421B.5Floating-point environmentB.6422Characteristicsof floatingtypes422B.7Formatconversionofintegertypes423B.8Alternative spellings423B.9Sizes of integertypes423B.10 Localization423B.11 Mathematics428B.12 Nonlocal jumps428B.13 Signal handling428B.14 Variable arguments428B.15 Boolean type and values429B.16 Common definitions429B.17 Integertypes429B.18 Input/output431B.19 General utilities433B.20 String handling434B.21 Type-genericmath434B.22 Dateandtime435B.23 Extended multibyte/wide character utilities 437B.24 Wide character classification and mapping utilities439Annex C(informative)Sequence points440AnnexD (normative)Universal character names for identifiers442AnnexE(informative)Implementationlimits444AnnexF (normative)IEC60559floating-point arithmetic444F.1IntroductionF.2444TypesF.3445Operators and functionsviliContents
ISO/IEC 9899:201x Committee Draft — August 11, 2008 WG14/N1336 7.26.10 General utilities . 402 7.26.11 String handling . 402 7.26.12 Extended multibyte and wide character utilities . 402 7.26.13 Wide character classification and mapping utilities . 402 AnnexA(informative) Language syntax summary . 403 A.1 Lexical grammar . 403 A.2 Phrase structure grammar . 409 A.3 Preprocessing directives . 416 AnnexB(informative) Library summary . 419 B.1 Diagnostics . 419 B.2 Complex . 419 B.3 Character handling . 421 B.4 Errors . 421 B.5 Floating-point environment . 421 B.6 Characteristics of floating types . 422 B.7 Format conversion of integer types . 422 B.8 Alternative spellings . 423 B.9 Sizes of integer types . 423 B.10 Localization . 423 B.11 Mathematics . 423 B.12 Nonlocal jumps . 428 B.13 Signal handling . 428 B.14 Variable arguments . 428 B.15 Boolean type and values . 428 B.16 Common definitions . 429 B.17 Integer types . 429 B.18 Input/output . 429 B.19 General utilities . 431 B.20 String handling . 433 B.21 Type-generic math . 434 B.22 Date and time . 434 B.23 Extended multibyte/wide character utilities . 435 B.24 Wide character classification and mapping utilities . 437 AnnexC(informative) Sequence points . 439 AnnexD(normative) Universal character names for identifiers . 440 AnnexE(informative) Implementation limits . 442 AnnexF(normative) IEC 60559 floating-point arithmetic . 444 F.1 Introduction . 444 F.2 Types . 444 F.3 Operators and functions . 445 viii Contents

WG14/N1336Committee Draft—August 11, 2008ISO/IEC9899:201xF.4447Floatingto integer conversionF.5447Binary-decimal conversionF.6448Contracted expressionsF.7448Floating-pointenvironmentF.8451OptimizationF.9454Mathematics467AnnexG(informative)IEC60559-compatiblecomplexarithmeticG.1467IntroductionG.2467TypesG.3467ConventionsG.4468ConversionsG.5468Binaryoperators472G.6Complexarithmetic480G.7Type-generic math481Annex H (informative) Language independent arithmetic481H.1 Introduction481H.2TypesH.3 Notification485487AnnexI(informative)Commonwarnings489AnnexJ(informative)Portabilityissues489J.1Unspecified behaviorJ.2492Undefined behaviorJ.3505Implementation-defined behaviorJ.4512Locale-specific behaviorJ.5513CommonextensionsBibliography516519IndexContentsix
WG14/N1336 Committee Draft — August 11, 2008 ISO/IEC 9899:201x F.4 Floating to integer conversion . 447 F.5 Binary-decimal conversion . 447 F.6 Contracted expressions . 448 F.7 Floating-point environment . 448 F.8 Optimization . 451 F.9 Mathematics . 454 AnnexG(informative) IEC 60559-compatible complex arithmetic . 467 G.1 Introduction . 467 G.2 Types . 467 G.3 Conventions . 467 G.4 Conversions . 468 G.5 Binary operators . 468 G.6 Complex arithmetic . 472 G.7 Type-generic math . 480 AnnexH(informative) Language independent arithmetic . 481 H.1 Introduction . 481 H.2 Types . 481 H.3 Notification . 485 AnnexI(informative) Common warnings . 487 AnnexJ(informative) Portability issues . 489 J.1 Unspecified behavior . 489 J.2 Undefined behavior . 492 J.3 Implementation-defined behavior . 505 J.4 Locale-specific behavior . 512 J.5 Common extensions . 513 Bibliography . 516 Index . 519 Contents ix

ISO/IEC9899:201xCommittee Draft August 11, 2008WG14/N1336ContentsX
ISO/IEC 9899:201x Committee Draft — August 11, 2008 WG14/N1336 x Contents

WG14/N1336ISO/IEC9899:201xCommittee Draft—August 11, 2008ForewordISO (the International Organization for Standardization) and IEC (the InternationalElectrotechnical Commission)formthespecializedsystem for worldwidestandardization. National bodies that are member of ISO or IEC participate in thedevelopmentofInternationalStandardsthroughtechnicalcommitteesestablishedbytherespective organization todeal with particular fields of technical activity.ISOand IECtechnicalcommitteescollaboratein fields ofmutualinterest.Otherinternationalorganizations, governmental and non-governmental, in liaison with ISO and IEC, alsotake part in the work.2International Standards are drafted in accordance with the rules given in the ISO/IECDirectives,Part2.ThisInternationalStandard was drafted inaccordancewiththefifthedition (2004)3In the field of information technology, ISO and IEC have established a joint technicalcommittee,ISO/IECJTC1.DraftInternationalStandardsadoptedbythejointtechnicalcommittee are circulated to national bodies for voting.Publication as an InternationalStandard requires approval by at least 75% of the national bodies casting a vote.XAttention is drawn to the possibility that some of the elements of this document may bethe subject of patentrights.ISO andIEC shall not be held responsiblefor identifying anyorallsuchpatentrights.5This International Standard was prepared by Joint Technical Committee ISO/IEC JTC 1,Information technology,SubcommitteeSC22,Programminglanguages,theirenvironments and system sofiware interfaces.The Working Group responsible for thisstandard (WG 14) maintains a site on the World Wide Web at http://www.open-std.org/JTc1/sc22/wG14/ containing additional information relevant to thisstandard such as a Rationale for many of the decisions made during its preparation and alogofDefectReportsandResponses6Thisthird editioncancelsandreplaces the second edition,ISO/IEC9899:1999,ascorrectedbyISO/IEC9899:1999/Cor1:2001,ISO/IEC9899:1999/Cor2:2004,andISO/IEC9899:1999/Cor3:2007.Majorchangesfrom theprevious edition include:- (To be determined)Major changes in the second edition included:- restricted character set support via digraphs and (originally specifiedin AMD1)wide character library support in and (originallyspecified inAMDI)moreprecisealiasingrulesviaeffectivetyperestrictedpointers-variable length arraysForewordxi
WG14/N1336 Committee Draft — August 11, 2008 ISO/IEC 9899:201x Foreword 1 ISO (the International Organization for Standardization) and IEC (the International Electrotechnical Commission) form the specialized system for worldwide standardization. National bodies that are member of ISO or IEC participate in the development of International Standards through technical committees established by the respective org anization to deal with particular fields of technical activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other international organizations, governmental and non-governmental, in liaison with ISO and IEC, also take part in the work. 2 International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 2. This International Standard was drafted in accordance with the fifth edition (2004). 3 In the field of information technology, ISO and IEC have established a joint technical committee, ISO/IEC JTC 1. Draft International Standards adopted by the joint technical committee are circulated to national bodies for voting. Publication as an International Standard requires approval by at least 75% of the national bodies casting a vote. 4 Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights. 5 This International Standard was prepared by Joint Technical Committee ISO/IEC JTC 1, Information technology, Subcommittee SC 22, Programming languages, their environments and system software interfaces. The Working Group responsible for this standard (WG 14) maintains a site on the World Wide Web at http://www.openstd.org/JTC1/SC22/WG14/ containing additional information relevant to this standard such as a Rationale for many of the decisions made during its preparation and a log of Defect Reports and Responses. 6 This third edition cancels and replaces the second edition, ISO/IEC 9899:1999, as corrected by ISO/IEC 9899:1999/Cor 1:2001, ISO/IEC 9899:1999/Cor 2:2004, and ISO/IEC 9899:1999/Cor 3:2007. Major changes from the previous edition include: — (To be determined) 7 Major changes in the second edition included: — restricted character set support via digraphs and (originally specified in AMD1) — wide character library support in and (originally specified in AMD1) — more precise aliasing rules via effective type — restricted pointers — variable length arrays Foreword xi