WG14/N1336CommitteeDraft—August11,2008ISO/IEC9899:201xINTERNATIONALSTANDARD©ISO/IECISO/IEC9899:201xProgramminglanguages—CABSTRACT(CoversheettobeprovidedbyISOSecretariat.)ThisInternationalStandardspecifiestheformandestablishestheinterpretationofprogramsexpressedintheprogramminglanguageC.Itspurposeistopromoteportability,reliability,maintainability,andefficientexecutionofClanguageprogramsonavarietyofcomputingsystems.ClausesareincludedthatdetailtheClanguageitselfandthecontentsoftheClanguageexecutionlibrary.Annexessummarizeaspectsofbothofthem,andenumeratefactorsthatinfluencetheportabilityofCprograms.AlthoughthisInternationalStandardisintendedtoguideknowledgeableClanguageprogrammersaswellasimplementorsofClanguagetranslationsystems,thedocumentitselfisnotdesignedtoserveasatutorial.Recipientsofthisdraftareinvitedtosubmit,withtheircomments,notificationofanyrelevantpatentrightsofwhichtheyareawareandtoprovidesupportingdocumentation.AbstractiISO/IEC9899:201xCommitteeDraft—August11,2008WG14/N1336iiWG14/N1336CommitteeDraft—August11,2008ISO/IEC9899:201xContentsForeword.............................xiIntroduction............................xiv1.Scope.............................12.Normativereferences.......................23.Terms,definitions,andsymbols...................34.Conformance..........................75.Environment..........................95.1Conceptualmodels.....................95.1.1Translationenvironment................95.1.2Executionenvironments................115.2Environmentalconsiderations.................175.2.1Charactersets....................175.2.2Characterdisplaysemantics..............195.2.3Signalsandinterrupts.................205.2.4Environmentallimits.................206.Language............................296.1Notation..........................296.2Concepts.........................296.2.1Scopesofidentifiers.................296.2.2Linkagesofidentifiers.................306.2.3Namespacesofidentifiers...............316.2.4Storagedurationsofobjects..............326.2.5Types.......................336.2.6Representationsoftypes................376.2.7Compatibletypeandcompositetype...........406.3Conversions........................426.3.1Arithmeticoperands.................426.3.2Otheroperands...................466.4Lexicalelements......................496.4.1Keywords......................506.4.2Identifiers......................516.4.3Universalcharacternames...............536.4.4Constants......................546.4.5Stringliterals....................626.4.6Punctuators.....................636.4.7Headernames....................646.4.8Preprocessingnumbers................656.4.9Comments.....................666.5Expressions........................67ContentsiiiISO/IEC9899:201xCommitteeDraft—August11,2008WG14/N13366.5.1Primaryexpressions.................696.5.2Postfixoperators...................696.5.3Unaryoperators...................786.5.4Castoperators....................816.5.5Multiplicativeoperators................826.5.6Additiveoperators..................826.5.7Bitwiseshiftoperators.................846.5.8Relationaloperators..................856.5.9Equalityoperators..................866.5.10BitwiseANDoperator.................876.5.11BitwiseexclusiveORoperator.............886.5.12BitwiseinclusiveORoperator..............886.5.13LogicalANDoperator.................896.5.14LogicalORoperator.................896.5.15Conditionaloperator.................906.5.16Assignmentoperators.................916.5.17Commaoperator...................946.6Constantexpressions.....................956.7Declarations........................976.7.1Storage-classspecifiers................986.7.2Typespecifiers....................996.7.3Typequalifiers....................1086.7.4Functionspecifiers..................1126.7.5Declarators.....................1146.7.6Typenames.....................1226.7.7Typedefinitions...................1236.7.8Initialization....................1256.8Statementsandblocks....................1316.8.1Labeledstatements..................1316.8.2Compoundstatement.................1326.8.3Expressionandnullstatements.............1326.8.4Selectionstatements.................1336.8.5Iterationstatements..................1356.8.6Jumpstatements...................1366.9Externaldefinitions.....................1406.9.1Functiondefinitions..................1416.9.2Externalobjectdefinitions...............1436.10Preprocessingdirectives...................1456.10.1Conditionalinclusion.................1476.10.2Sourcefileinclusion.................1496.10.3Macroreplacement..................1516.10.4Linecontrol.....................1586.10.5Errordirective....................1596.10.6Pragmadirective...................159ivContentsWG14/N1336CommitteeDraft—August11,2008ISO/IEC9899:201x6.10.7Nulldirective....................1606.10.8Predefinedmacronames................1606.10.9Pragmaoperator...................1616.11Futurelanguagedirections..................1636.11.1Floatingtypes....................1636.11.2Linkagesofidentifiers.................1636.11.3Externalnames....