
INCITS/ISO/IEC9899-2011|2012](ISO/IEC9899-2011,IDT)sInformation technology Programminglanguages-CDeveloped byincitsWhereITallbeginsted American NationANSI
INCITS/ISO/IEC 9899-2011[2012] (ISO/IEC 9899-2011, IDT) Information technology — Programming languages — C

INCITS/ISO/IEC9899-2011[2012]PDFdisclaimerThisPDFfilemaycontainembeddedtypefaces.InaccordancewithAdobe'slicensingpolicy,thisflemaybeprinted orviewed but shall notbeeditedunlessthetypefaces whichareembeddedare licensedtoand installed onthecomputerperformingthe editing.Indownloadingthisfile,parties accept therein the responsibility of not infringing Adobe's licensing policy.The ISO Central Secretariat accepts no liability in thisarea.Adobe is a trademark of Adobe Systems Incorporated.Details of the software products used to create this PDF fle can be found in the General Info relative to the file; the PDF-creation parameterswere optimized for printing.Every care has been taken to ensure that the file is suitablefor use by ISOmember bodies. In the unlikely eventthat a problem relating to it is found, please inform the Central Secretariat at the address given below.AdoptedbyINCiTS(lnterNationalCommitteeforInformationTechnologyStandards)asanAmericanNationalStandard.DateofANSIApproval:5/23/2012Published by American National Standards Institute,25West43rdStreet,NewYork,NewYork10036Copyright 2012by InformationTechnology Industry Council(ITI). All rights reservedThese materials are subject to copyright claims of International Standardization Organization (ISO),IntermationalElectrotechnical Commission (IEC),AmericanNational Standards Institute(ANSI),andInformation TechnologyIndustry Council (ITl).Notforresale.Nopartof thispublicationmaybereproduced inanyform, including anelectronic retrieval system,without the prior written permission of iTI.All requests pertaining to this standardshouldbesubmittedtoITI,1250EyeStreetNW,Washington,DC20005PrintedintheUnitedStatesofAmericaiITIC2012-Allrightsreserved
INCITS/ISO/IEC 9899-2011[2012] PDF disclaimer This PDF file may contain embedded typefaces. In accordance with Adobe's licensing policy, this file may be printed or viewed but shall not be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In downloading this file, parties accept therein the responsibility of not infringing Adobe's licensing policy. The ISO Central Secretariat accepts no liability in this area. Adobe is a trademark of Adobe Systems Incorporated. Details of the software products used to create this PDF file can be found in the General Info relative to the file; the PDF-creation parameters were optimized for printing. Every care has been taken to ensure that the file is suitable for use by ISO member bodies. In the unlikely event that a problem relating to it is found, please inform the Central Secretariat at the address given below. Adopted by INCITS (InterNational Committee for Information Technology Standards) as an American National Standard. Date of ANSI Approval: 5/23/2012 Published by American National Standards Institute, 25 West 43rd Street, New York, New York 10036 Copyright 2012 by Information Technology Industry Council (ITI). All rights reserved. These materials are subject to copyright claims of International Standardization Organization (ISO), International Electrotechnical Commission (IEC), American National Standards Institute (ANSI), and Information Technology Industry Council (ITI). Not for resale. No part of this publication may be reproduced in any form, including an electronic retrieval system, without the prior written permission of ITI. All requests pertaining to this standard should be submitted to ITI, 1250 Eye Street NW, Washington, DC 20005. Printed in the United States of America ii © ITIC 2012 – All rights reserved

ISO/IEC 2011 - All rights reservedISO/IEC9899:2011 (E)ContentsForewordxiliIntroductionxvi11.Scope22.Normative references33. Terms, definitions, and symbols84.Conformance105.Environment105.1Conceptual models105.1.1Translation environment125.1.2Execution environments225.2Environmental considerations225.2.1Character sets245.2.2Character display semantics255.2.3Signals and interrupts255.2.4Environmental limits356.Language356.1Notation356.2Concepts356.2.1Scopes of identifiers366.2.2Linkages of identifiers376.2.3Namespaces ofidentifiers386.2.4Storage durations of objects396.2.5Types6.2.644Representations of types476.2.7Compatibletypeand compositetype6.2.848Alignment of objects6.350Conversions506.3.1Arithmetic operands546.3.2Otheroperands576.4Lexical elements586.4.1Keywords6.4.259Identifiers6.4.361Universal characternames626.4.4Constants706.4.5String literals726.4.6Punctuators736.4.7Headernames746.4.8Preprocessing numbers756.4.9CommentsiliContents
© ISO/IEC 2011 − All rights reserved ISO/IEC 9899:2011 (E) 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/IEC9899:2011 (E)ISO/IEC 2011 - All rights reserved6.576Expressions6.5.178Primary expressions796.5.2Postfix operators6.5.388Unaryoperators916.5.4Cast operators926.5.5Multiplicativeoperators926.5.6Additive operators946.5.7Bitwise shift operators956.5.8Relational operators966.5.9Equalityoperators976.5.10Bitwise AND operator986.5.11Bitwise exclusive OR operator986.5.12Bitwise inclusive OR operator996.5.13Logical AND operator996.5.14Logical OR operator6.5.15100Conditional operator6.5.16101Assignment operators1056.5.17Comma operator6.6106Constant expressions6.7108Declarations1096.7.1Storage-class specifiers6.7.2111Type specifiers6.7.3121Typequalifiers6.7.4125Function specifiers6.7.5127Alignment specifier6.7.6128Declarators6.7.7136Typenames6.7.8137Type definitions6.7.9139Initialization1456.7.10Static assertions6.8Statements and blocks1466.8.1146Labeled statements6.8.2147Compound statement6.8.3147Expression and null statements6.8.4148Selection statements6.8.5150Iteration statements6.8.6151Jumpstatements6.9155External definitions1566.9.1Function definitions6.9.2158Externalobjectdefinitions1606.10 Preprocessingdirectives1626.10.1Conditional inclusion1646.10.2Source file inclusion1666.10.3Macro replacementivContents
ISO/IEC 9899:2011 (E) © ISO/IEC 2011 − All rights reserved 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

ISO/IEC 2011 - All rights reservedISO/IEC9899:2011(E)1736.10.4Line control1746.10.5Error directive1746.10.6Pragma directive1756.10.7Null directive1756.10.8Predefinedmacronames1786.10.9Pragma operator1796.11 Future language directions1796.11.1Floatingtypes1796.11.2Linkages of identifiers1796.11.3External names1796.11.4Characterescapesequences1796.11.5Storage-class specifiers1796.11.6Function declarators1796.11.7Function definitions1796.11.8Pragma directives.·1796.11.9Predefined macro names.1807. Library1807.1Introduction1807.1.1Definitions of terms7.1.2181Standard headers7.1.3182Reserved identifiers7.1.4183Use of library functions1867.2Diagnostics7.2.1186Program diagnostics1887.3Complex arithmetic7.3.1188Introduction7.3.2189Conventions1897.3.3Branch cuts7.3.4189TheCXLIMITED_RANGEpragma7.3.5190Trigonometric functions1927.3.6Hyperbolic functions1947.3.7Exponential and logarithmicfunctions1957.3.8Power andabsolute-valuefunctions7.3.9196Manipulationfunctions7.4200Character handling2007.4.1Character classification functions7.4.2203Character case mappingfunctions7.5205Errors2067.6Floating-point environment2087.6.1The FENV ACCESS pragma2097.6.2Floating-point exceptions2127.6.3Rounding7.6.4213Environment2167.7Characteristics of floating types Contentsv
© ISO/IEC 2011 − All rights reserved ISO/IEC 9899:2011 (E) 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

ISO/IEC9899:2011(E) ISO/IEC 2011 - All rights reserved2177.8Format conversion of integertypes2177.8.1Macrosforformat specifiers2187.8.2Functions for greatest-width integer types2217.9Alternative spellings2227.10Sizesof integertypes2237.11 Localization2247.11.1Localecontrol2257.11.2Numeric formatting convention inquiry2317.12 Mathematics2337.12.1Treatment oferror conditions2357.12.2TheFP_CONTRACTpragma7.12.3235Classificationmacros2387.12.4Trigonometric functions2407.12.5Hyperbolic functions2427.12.6Exponential and logarithmic functions2477.12.7Power and absolute-value functions2497.12.8Error and gamma functions2517.12.9Nearest integer functions2547.12.10 Remainder functions2557.12.11 Manipulation functions2577.12.12Maximum,minimum,and positivedifference functions2587.12.13 Floating multiply-add2597.12.14 Comparison macros2627.13 Nonlocal jumps2627.13.1Save calling environment2637.13.2Restorecalling environment2657.14 Signal handling2667.14.1Specify signal handling2677.14.2Send signal2687.15 Alignment2697.16Variablearguments2697.16.1Variable argument list access macros2737.17Atomics7.17.1273Introduction2747.17.2Initialization2757.17.3Order and consistency7.17.4278Fences2797.17.5Lock-freeproperty2807.17.6Atomicintegertypes2827.17.7Operationsonatomictypes2857.17.8Atomicflagtypeandoperations2877.18 Boolean type and values2887.19 Common definitions2897.20 IntegertypesviContents
ISO/IEC 9899:2011 (E) © ISO/IEC 2011 − All rights reserved 7.8 Format conversion of integer types . 217 7.8.1 Macros for format specifiers . 217 7.8.2 Functions for greatest-width integer types . 218 7.9 Alternative spellings . 221 7.10 Sizes of integer types . 222 7.11 Localization . 223 7.11.1 Locale control . 224 7.11.2 Numeric formatting convention inquiry . 225 7.12 Mathematics . 231 7.12.1 Treatment of error conditions . 233 7.12.2 The FP_CONTRACT pragma . 235 7.12.3 Classification macros . 235 7.12.4 Trigonometric functions . 238 7.12.5 Hyperbolic functions . 240 7.12.6 Exponential and logarithmic functions . 242 7.12.7 Power and absolute-value functions . 247 7.12.8 Error and gamma functions . 249 7.12.9 Nearest integer functions . 251 7.12.10 Remainder functions . 254 7.12.11 Manipulation functions . 255 7.12.12 Maximum, minimum, and positive difference functions . 257 7.12.13 Floating multiply-add . 258 7.12.14 Comparison macros . 259 7.13 Nonlocal jumps . 262 7.13.1 Save calling environment . 262 7.13.2 Restore calling environment . 263 7.14 Signal handling . 265 7.14.1 Specify signal handling . 266 7.14.2 Send signal . 267 7.15 Alignment . 268 7.16 Variable arguments . 269 7.16.1 Variable argument list access macros . 269 7.17 Atomics . 273 7.17.1 Introduction . 273 7.17.2 Initialization . 274 7.17.3 Order and consistency . 275 7.17.4 Fences . 278 7.17.5 Lock-free property . 279 7.17.6 Atomic integer types . 280 7.17.7 Operations on atomic types . 282 7.17.8 Atomic flag type and operations . 285 7.18 Boolean type and values . 287 7.19 Common definitions . 288 7.20 Integer types . 289 vi Contents

ISO/IEC 2011 -All rights reservedISO/IEC9899:2011(E)2897.20.1 Integer types2917.20.2Limits of specified-width integertypes2937.20.3Limits of other integer types2947.20.4Macrosfor integer constants2967.21 Input/output2967.21.1Introduction7.21.2298Streams7.21.3300Files3027.21.4Operations on files3047.21.5File access functions3097.21.6Formatted input/output functions3307.21.7Character input/output functions3357.21.8Direct input/output functions3367.21.9File positioning functions3387.21.10 Error-handling functions3407.22 General utilities3417.22.1Numeric conversion functions3467.22.2Pseudo-random sequence generation functions3477.22.3Memorymanagementfunctions3507.22.4Communication withtheenvironment7.22.5354Searching and sorting utilities3567.22.6Integer arithmetic functions3577.22.7Multibyte/widecharacterconversionfunctions3597.22.8Multibyte/widestringconversionfunctions3617.23Noreturn3627.24String handling3627.24.1String function conventions3627.24.2Copying functions7.24.3364Concatenationfunctions3657.24.4Comparison functions3677.24.5Searchfunctions3717.24.6Miscellaneousfunctions3737.25 Type-generic math3767.26 Threads3767.26.1Introduction3787.26.2Initialization functions3787.26.3Condition variable functions3807.26.4Mutex functions3837.26.5Thread functions3867.26.6Thread-specific storagefunctions3887.27 Date and time3887.27.1Components of time3897.27.2Time manipulation functions3927.27.3Time conversion functionsContentsvii
© ISO/IEC 2011 − All rights reserved ISO/IEC 9899:2011 (E) 7.20.1 Integer types . 289 7.20.2 Limits of specified-width integer types . 291 7.20.3 Limits of other integer types . 293 7.20.4 Macros for integer constants . 294 7.21 Input/output . 296 7.21.1 Introduction . 296 7.21.2 Streams . 298 7.21.3 Files . 300 7.21.4 Operations on files . 302 7.21.5 File access functions . 304 7.21.6 Formatted input/output functions . 309 7.21.7 Character input/output functions . 330 7.21.8 Direct input/output functions . 335 7.21.9 File positioning functions . 336 7.21.10 Error-handling functions . 338 7.22 General utilities . 340 7.22.1 Numeric conversion functions . 341 7.22.2 Pseudo-random sequence generation functions . 346 7.22.3 Memory management functions . 347 7.22.4 Communication with the environment . 350 7.22.5 Searching and sorting utilities . 354 7.22.6 Integer arithmetic functions . 356 7.22.7 Multibyte/wide character conversion functions . 357 7.22.8 Multibyte/wide string conversion functions . 359 7.23 _Noreturn . 361 7.24 String handling . 362 7.24.1 String function conventions . 362 7.24.2 Copying functions . 362 7.24.3 Concatenation functions . 364 7.24.4 Comparison functions . 365 7.24.5 Search functions . 367 7.24.6 Miscellaneous functions . 371 7.25 Type-generic math . 373 7.26 Threads . 376 7.26.1 Introduction . 376 7.26.2 Initialization functions . 378 7.26.3 Condition variable functions . 378 7.26.4 Mutex functions . 380 7.26.5 Thread functions . 383 7.26.6 Thread-specific storage functions . 386 7.27 Date and time . 388 7.27.1 Components of time . 388 7.27.2 Time manipulation functions . 389 7.27.3 Time conversion functions . 392 Contents vii

ISO/IEC9899:2011(E) ISO/IEC 2011 - All rights reserved3987.28 Unicode utilities3987.28.1Restartablemultibyte/widecharacterconversionfunctions4027.29 Extended multibyte and wide character utilities 4027.29.1Introduction7.29.2403Formattedwidecharacterinput/outputfunctions4217.29.3Wide character input/output functions4267.29.4General widestringutilities4267.29.4.1 Wide string numeric conversion functions7.29.4.2Wide stringcopyingfunctions4304327.29.4.3Wide string concatenation functions4337.29.4.4Widestringcomparisonfunctions4357.29.4.5 Wide string search functions4397.29.4.6 Miscellaneous functions4397.29.5Wide character time conversion functions4407.29.6Extendedmultibyte/widecharacterconversionutilities4417.29.6.1Single-byte/widecharacterconversionfunctions4417.29.6.2 Conversion state functions7.29.6.3Restartable multibyte/wide character conversion442functions7.29.6.4Restartablemultibyte/wide stringconversion444functions4477.30 Wide characterclassification andmappingutilities4477.30.1Introduction7.30.2448Widecharacterclassificationutilities4487.30.2.1Widecharacterclassificationfunctions7.30.2.2Extensiblewide character classification451functions4537.30.3Wide character case mapping utilities4537.30.3.1Wide character case mapping functions7.30.3.2Extensiblewidecharactercasemapping453functions4557.31 Future librarydirections4557.31.1Complex arithmetic 7.31.2455Character handling4557.31.3Errors4557.31.4Floating-point environment4557.31.5Format conversion of integer types4557.31.6Localization4557.31.7Signal handling 4557.31.8Atomics7.31.9456Boolean type and values4567.31.10 Integer types4567.31.11 Input/output4567.31.12GeneralutilitiesviliContents
ISO/IEC 9899:2011 (E) © ISO/IEC 2011 − All rights reserved 7.28 Unicode utilities . 398 7.28.1 Restartable multibyte/wide character conversion functions . . 398 7.29 Extended multibyte and wide character utilities . 402 7.29.1 Introduction . 402 7.29.2 Formatted wide character input/output functions . 403 7.29.3 Wide character input/output functions . 421 7.29.4 General wide string utilities . 426 7.29.4.1 Wide string numeric conversion functions . 426 7.29.4.2 Wide string copying functions . 430 7.29.4.3 Wide string concatenation functions . 432 7.29.4.4 Wide string comparison functions . 433 7.29.4.5 Wide string search functions . 435 7.29.4.6 Miscellaneous functions . 439 7.29.5 Wide character time conversion functions . 439 7.29.6 Extended multibyte/wide character conversion utilities . 440 7.29.6.1 Single-byte/wide character conversion functions . 441 7.29.6.2 Conversion state functions . 441 7.29.6.3 Restartable multibyte/wide character conversion functions . 442 7.29.6.4 Restartable multibyte/wide string conversion functions . 444 7.30 Wide character classification and mapping utilities . 447 7.30.1 Introduction . 447 7.30.2 Wide character classification utilities . 448 7.30.2.1 Wide character classification functions . 448 7.30.2.2 Extensible wide character classification functions . 451 7.30.3 Wide character case mapping utilities . 453 7.30.3.1 Wide character case mapping functions . 453 7.30.3.2 Extensible wide character case mapping functions . 453 7.31 Future library directions . 455 7.31.1 Complex arithmetic . 455 7.31.2 Character handling . 455 7.31.3 Errors . 455 7.31.4 Floating-point environment . 455 7.31.5 Format conversion of integer types . 455 7.31.6 Localization . 455 7.31.7 Signal handling . 455 7.31.8 Atomics . 455 7.31.9 Boolean type and values . 456 7.31.10 Integer types . 456 7.31.11 Input/output . 456 7.31.12 General utilities . 456 viii Contents

ISO/IEC 2011 - All rights reservedISO/IEC9899:2011(E)4567.31.13 String handling4567.31.14 Dateandtime4567.31.15 Threads7.31.16Extended multibyteand wide characterutilities4567.31.17Widecharacterclassificationandmappingutilities457458AnnexA(informative)Languagesyntaxsummary458A.1 Lexical grammar465A.2 Phrase structuregrammar473A.3 Preprocessing directives475AnnexB(informative)Librarysummary475B.1DiagnosticsB.2475ComplexB.3477Character handling477B.4ErrorsB.5477Floating-point environmentB.6478CharacteristicsoffloatingtypesB.7478Format conversion of integer typesB.8479AlternativespellingsB.9479Sizes of integer types 479B.10 Localization479B.11 Mathematics484B.12 Nonlocal jumps484B.13 Signal handling485B.14 Alignment485B.15 Variable arguments485B.16Atomics487B.17 Boolean type and values487B.18 Common definitions487B.19 Integertypes488B.20 Input/output491B.21 General utilities493B.22.Noreturn493B.23 String handling495B.24 Type-generic math495B.25 Threads496B.26 Dateand time497B.27 Unicode utilities497B.28 Extendedmultibyte/wide character utilities502B.29 Wide character classification and mapping utilities503Annex C (informative) Sequence pointsixContents
© ISO/IEC 2011 − All rights reserved ISO/IEC 9899:2011 (E) 7.31.13 String handling . 456 7.31.14 Date and time . 456 7.31.15 Threads . 456 7.31.16 Extended multibyte and wide character utilities . 456 7.31.17 Wide character classification and mapping utilities . 457 Annex A (informative) Language syntax summary . 458 A.1 Lexical grammar . 458 A.2 Phrase structure grammar . 465 A.3 Preprocessing directives . 473 Annex B (informative) Library summary . 475 B.1 Diagnostics . 475 B.2 Complex . 475 B.3 Character handling . 477 B.4 Errors . 477 B.5 Floating-point environment . 477 B.6 Characteristics of floating types . 478 B.7 Format conversion of integer types . 478 B.8 Alternative spellings . 479 B.9 Sizes of integer types . 479 B.10 Localization . 479 B.11 Mathematics . 479 B.12 Nonlocal jumps . 484 B.13 Signal handling . 484 B.14 Alignment . 485 B.15 Variable arguments . 485 B.16 Atomics . 485 B.17 Boolean type and values . 487 B.18 Common definitions . 487 B.19 Integer types . 487 B.20 Input/output . 488 B.21 General utilities . 491 B.22 _Noreturn . 493 B.23 String handling . 493 B.24 Type-generic math . 495 B.25 Threads . 495 B.26 Date and time . 496 B.27 Unicode utilities . 497 B.28 Extended multibyte/wide character utilities . 497 B.29 Wide character classification and mapping utilities . 502 Annex C (informative) Sequence points . 503 Contents ix

ISO/IEC9899:2011(E)ISO/IEC 2011 - All rights reserved504Annex D (normative)Universal character names for identifiers504D.1Rangesofcharactersallowed504D.2 Ranges of characters disallowed initially505AnnexE(informative)Implementationlimits507AnnexF(normative)IEC60559floating-pointarithmetic507F.1IntroductionF.2507TypesF.3508OperatorsandfunctionsF.4510Floating to integer conversionF.5510Binary-decimal conversionF.6511The return statementF.7511Contracted expressionsF.8511Floating-point environmentF.9514Optimization517F.10Mathematics518F.10.1Trigonometric functions520F.10.2Hyperbolic functionsF.10.3520Exponential and logarithmic functionsF.10.4524Power and absolute value functions525F.10.5Errorandgammafunctions526F.10.6Nearest integer functions528F.10.7Remainder functions529F.10.8Manipulation functions530F.10.9Maximum,minimum,and positivedifferencefunctions530F.10.10 Floating multiply-add531F.10.11 Comparisonmacros532AnnexG(normative)IEC60559-compatiblecomplexarithmetic532G.1IntroductionG.2 532TypesG.3532Conventions533G.4Conversions533G.4.1Imaginarytypes533G.4.2Real and imaginary533G.4.3Imaginary and complex533G.5Binary operators534G.5.1Multiplicative operatorsG.5.2537Additive operators537G.6Complexarithmetic539G.6.1Trigonometric functionsG.6.2539Hyperbolic functions543G.6.3Exponential and logarithmic functions544G.6.4Powerandabsolute-valuefunctionsG.7545Type-generic mathXContents
ISO/IEC 9899:2011 (E) © ISO/IEC 2011 − All rights reserved Annex D (normative) Universal character names for identifiers . 504 D.1 Ranges of characters allowed . 504 D.2 Ranges of characters disallowed initially . 504 Annex E (informative) Implementation limits . 505 Annex F (normative) IEC 60559 floating-point arithmetic . 507 F.1 Introduction . 507 F.2 Types . 507 F.3 Operators and functions . 508 F.4 Floating to integer conversion . 510 F.5 Binary-decimal conversion . 510 F.6 The return statement . 511 F.7 Contracted expressions . 511 F.8 Floating-point environment . 511 F.9 Optimization . 514 F.10 Mathematics . 517 F.10.1 Trigonometric functions . 518 F.10.2 Hyperbolic functions . 520 F.10.3 Exponential and logarithmic functions . 520 F.10.4 Power and absolute value functions . 524 F.10.5 Error and gamma functions . 525 F.10.6 Nearest integer functions . 526 F.10.7 Remainder functions . 528 F.10.8 Manipulation functions . 529 F.10.9 Maximum, minimum, and positive difference functions . 530 F.10.10 Floating multiply-add . 530 F.10.11 Comparison macros . 531 Annex G (normative) IEC 60559-compatible complex arithmetic . 532 G.1 Introduction . 532 G.2 Types . 532 G.3 Conventions . 532 G.4 Conversions . 533 G.4.1 Imaginary types . 533 G.4.2 Real and imaginary . 533 G.4.3 Imaginary and complex . 533 G.5 Binary operators . 533 G.5.1 Multiplicative operators . 534 G.5.2 Additive operators . 537 G.6 Complex arithmetic . 537 G.6.1 Trigonometric functions . 539 G.6.2 Hyperbolic functions . 539 G.6.3 Exponential and logarithmic functions . 543 G.6.4 Power and absolute-value functions . 544 G.7 Type-generic math . 545 x Contents