WG14/N1336Committee Draft — August 11, 2008ISO/IEC9899:201x3.Terms,definitions,and symbolsFor the purposes of this International Standard, the following definitions apply. Other1terms are defined where they appear in italic type or on the left side of a syntax rule.Terms explicitly defined in this International Standard are not to be presumed to referimplicitly to similar terms defined elsewhere.Terms not defined in this InternationalStandard are to be interpreted according toISO/IEC 2382-1.Mathematical symbols notdefined in this International Standard are to be interpreted according to ISO 31-11.3.1-access(execution-timeaction)toread ormodifythevalueof an object2NOTE1Where onlyone ofthesetwo actions ismeant,“read"or“modify"is usedNOTE2Modify"includes the case where the new value being stored is the same as the previous value3NOTE3Expressions that arenotevaluateddonotaccessobjects.43.2alignment1requirement that objects of a particular type belocated on storage boundaries withaddresses that are particularmultiples of a byteaddress3.31argumentactualargumentactual parameter (deprecated)expression in the comma-separated list bounded by the parentheses in a function callexpression, or a sequence of preprocessing tokens in the comma-separated list boundedby the parentheses in a function-like macro invocation3.4-behaviorexternal appearanceoraction3.4.11implementation-defined behaviorunspecified behavior where each implementation documents howthe choice is madeEXAMPLEAn example of implementation-defined behavior is the propagation of the high-order bit2when a signed integer is shifted right.3.4.2locale-specific behavior1behavior that depends on local conventions of nationality, culture, and language that eachimplementation documents3$3.4.2General
WG14/N1336 Committee Draft — August 11, 2008 ISO/IEC 9899:201x 3. Terms, definitions, and symbols 1 For the purposes of this International Standard, the following definitions apply. Other terms are defined where they appear in italic type or on the left side of a syntax rule. Terms explicitly defined in this International Standard are not to be presumed to refer implicitly to similar terms defined elsewhere. Terms not defined in this International 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. 3.1 1 access 〈execution-time action〉 to read or modify the value of an object 2 NOTE 1 Where only one of these two actions is meant, ‘‘read’’ or ‘‘modify’’ is used. 3 NOTE 2 ‘‘Modify’’ includes the case where the new value being stored is the same as the previous value. 4 NOTE 3 Expressions that are not evaluated do not access objects. 3.2 1 alignment requirement that objects of a particular type be located on storage boundaries with addresses that are particular multiples of a byte address 3.3 1 argument actual argument actual parameter (deprecated) expression in the comma-separated list bounded by the parentheses in a function call expression, or a sequence of preprocessing tokens in the comma-separated list bounded by the parentheses in a function-like macro invocation 3.4 1 behavior external appearance or action 3.4.1 1 implementation-defined behavior unspecified behavior where each implementation documents how the choice is made 2 EXAMPLE An example of implementation-defined behavior is the propagation of the high-order bit when a signed integer is shifted right. 3.4.2 1 locale-specific behavior behavior that depends on local conventions of nationality, culture, and language that each implementation documents §3.4.2 General 3
ISO/IEC9899:201xWG14/N1336CommitteeDraftAugust11,2008EXAMPLEAn example of locale-specificbehavior is whetherthe islower function returnstruefor2characters other than the26lowercaseLatin letters3.4.31undefined behaviorbehavior,upon use of a nonportableor erroneous program construct or of erroneous data,for whichthis International Standard imposes norequirementsNOTE Possible undefined behavior ranges from ignoring the situation completely with unpredictable2results, to behaving during translation or program execution in a documented manner characteristic of theenvironment (with or without the issuance of a diagnostic message),to terminating a translation orexecution (withtheissuanceofadiagnosticmessage)EXAMPLEAn example of undefined behavior is the behavior on integeroverflow33.4.41unspecified behavioruse of an unspecified value, or other behavior where this International Standard providestwo or more possibilities and imposes no further requirements on which is chosen in anyinstanceEXAMPLEAn example of unspecified behavior is the order in which the arguments to a function are2evaluated.3.5bit1unit of data storage in the execution environment large enough to hold an object that mayhaveoneoftwovaluesNOTEIt need not be possible to express the address of each individual bit of an object.23.61byteaddressable unit of data storage large enough to hold any member of the basic charactersetoftheexecutionenvironmentNOTE 1It is possible to express the address of each individual byte of an object uniquely.23NOTE2Abyte is composed of a contiguous sequence of bits,the number of which is implementation-defined. The least significant bit is called the low-order bit; the most significant bit is called the high-orderbit.3.71character(abstract) member of a set of elements used for the organization, control, orrepresentationofdata3.7.11charactersingle-byte character(C) bit representation that fits in a byte4General$3.7.1
ISO/IEC 9899:201x Committee Draft — August 11, 2008 WG14/N1336 2 EXAMPLE An example of locale-specific behavior is whether the islower function returns true for characters other than the 26 lowercase Latin letters. 3.4.3 1 undefined behavior behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which this International Standard imposes no requirements 2 NOTE Possible undefined behavior ranges from ignoring the situation completely with unpredictable results, to behaving during translation or program execution in a documented manner characteristic of the environment (with or without the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic message). 3 EXAMPLE An example of undefined behavior is the behavior on integer overflow. 3.4.4 1 unspecified behavior use of an unspecified value, or other behavior where this International Standard provides two or more possibilities and imposes no further requirements on which is chosen in any instance 2 EXAMPLE An example of unspecified behavior is the order in which the arguments to a function are evaluated. 3.5 1 bit unit of data storage in the execution environment large enough to hold an object that may have one of two values 2 NOTE It need not be possible to express the address of each individual bit of an object. 3.6 1 byte addressable unit of data storage large enough to hold any member of the basic character set of the execution environment 2 NOTE 1 It is possible to express the address of each individual byte of an object uniquely. 3 NOTE 2 A byte is composed of a contiguous sequence of bits, the number of which is implementationdefined. The least significant bit is called the low-order bit; the most significant bit is called the high-order bit. 3.7 1 character 〈abstract〉 member of a set of elements used for the organization, control, or representation of data 3.7.1 1 character single-byte character 〈C〉 bit representation that fits in a byte 4 General §3.7.1
WG14/N1336Committee Draft — August 11, 2008ISO/IEC9899:201x3.7.2multibyte charactersequence of one or more bytes representing a member of the extended character set ofeither the sourceortheexecution environmentNOTEThe extended character set is a superset of the basic character set23.7.3wide characterbit representation that fits in an object of typewchar_t,capableof representinganycharacterin the current locale3.81constraintrestriction, either syntactic or semantic, by which the exposition of language elements isto be interpreted3.9correctlyroundedresult1representation in the result format that is nearest in value, subject to the current roundingmode, to what the result would be given unlimited range and precision3.10diagnostic messagemessage belonging to an implementation-defined subset of the implementation's messageoutput3.11forward referencereference to a later subclause of this International Standard that contains additionalinformationrelevanttothissubclause3.12implementationparticular set of software, running in a particular translation environment under particularcontrol options, that performs translation of programsfor, and supports execution offunctions in, a particular execution environment3.13implementation limit1restrictionimposeduponprogramsbytheimplementation3.14objectregion of data storage in the execution environment, the contents of which can representvalues5$3.14General
WG14/N1336 Committee Draft — August 11, 2008 ISO/IEC 9899:201x 3.7.2 1 multibyte character sequence of one or more bytes representing a member of the extended character set of either the source or the execution environment 2 NOTE The extended character set is a superset of the basic character set. 3.7.3 1 wide character bit representation that fits in an object of type wchar_t, capable of representing any character in the current locale 3.8 1 constraint restriction, either syntactic or semantic, by which the exposition of language elements is to be interpreted 3.9 1 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 3.10 1 diagnostic message message belonging to an implementation-defined subset of the implementation’s message output 3.11 1 forward reference reference to a later subclause of this International Standard that contains additional information relevant to this subclause 3.12 1 implementation particular set of software, running in a particular translation environment under particular control options, that performs translation of programs for, and supports execution of functions in, a particular execution environment 3.13 1 implementation limit restriction imposed upon programs by the implementation 3.14 1 object region of data storage in the execution environment, the contents of which can represent values §3.14 General 5
ISO/IEC9899:201xWG14/N1336Committee Draft August 11, 2008NOTE2When referenced, an objectmaybe interpreted as having a particular type;see 6.3.2.13.151parameterformal parameterformal argument (deprecated)object declared as part of a function declaration or definition that acquires a value onentry to the function, or an identifier from the comma-separated list bounded by theparentheses immediatelyfollowing the macro name in a function-likemacro definition3.161recommendedpracticespecification that is strongly recommended as being in keeping with the intent of thestandard, but that may be impractical for some implementations3.171valueprecise meaning of the contents of an object when interpreted as having a specific type3.17.11implementation-defined valueunspecified value where each implementation documents how the choice is made3.17.21indeterminate valueeitheran unspecifiedvalueora trap representation3.17.31unspecified valuevalid value of the relevant type where this International Standard imposesnorequirements on which value is chosen in any instanceNOTEAnunspecifiedvaluecannotbea traprepresentation23.18[x]1ceiling of x: the least integer greater than or equal to xEXAMPLE[2.4] is 3,[-2.4]is -2.23.19[x]1floor of x: the greatest integer less than or equal to xEXAMPLE[2.4]is 2,[-2.4]is-3.26General$3.19
ISO/IEC 9899:201x Committee Draft — August 11, 2008 WG14/N1336 2 NOTE When referenced, an object may be interpreted as having a particular type; see 6.3.2.1. 3.15 1 parameter formal parameter formal argument (deprecated) object declared as part of a function declaration or definition that acquires a value on 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 3.16 1 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 3.17 1 value precise meaning of the contents of an object when interpreted as having a specific type 3.17.1 1 implementation-defined value unspecified value where each implementation documents how the choice is made 3.17.2 1 indeterminate value either an unspecified value or a trap representation 3.17.3 1 unspecified value valid value of the relevant type where this International Standard imposes no requirements on which value is chosen in any instance 2 NOTE An unspecified value cannot be a trap representation. 3.18 1 x ceiling of x: the least integer greater than or equal to x 2 EXAMPLE 2. 4 is 3, −2. 4 is −2. 3.19 1 x floor of x: the greatest integer less than or equal to x 2 EXAMPLE 2. 4 is 2, −2. 4 is −3. 6 General §3.19
WG14/N1336Committee Draft— August 11, 2008ISO/IEC9899:201x4.ConformanceIn this International Standard, “shall'" is to be interpreted as a requirement on an1implementation or on a program; conversely,“shall not"is to be interpreted as aprohibition.2If a “shall" or “shall not" requirement that appears outside of a constraint is violated, thebehavioris undefined.Undefinedbehavioris otherwise indicated inthisInternationalStandard by the words “undefined behavior"" or by the omission of any explicit definitionof behavior. There is no difference in emphasis among these three; they all describe"behavior that is undefined"3A program that is correct in all other aspects, operating on correct data, containingunspecified behavior shall bea correct program and act in accordance with5.1.2.3.4The implementation shall not successfully translate a preprocessing translation unitcontaining a #error preprocessing directive unless it is part of a group skipped byconditionalinclusion5A strictly conforming program shall use only those features of the language and libraryspecified in this International Standard.2) It shall not produce output dependent on anyunspecified, undefined, or implementation-defined behavior, and shall not exceed anyminimum implementation limit.6The two forms of conforming implementation are hosted and freestanding.A conforminghosted implementation shall accept any strictly conforming program.A conformingfreestanding implementation shall accept any strictly conforming program that does notuse complex types and in which the use of the features specified in the library clause(clause 7) is confined to the contents of the standard headers <float.h>,<iso646.h>,<limits.h>,<stdarg.h>,<stdbool.h>,<stddef.h>, and<stdint.h>.A conforming implementation may have extensions (including additionallibrary functions), provided they do not alter the behavior of any strictly conformingprogram.3)2)A strictly conforming program can use conditional features (such as those in annex F) provided theuse is guarded bya #ifdef directive with the appropriate macro.For example:#ifdef-_STDC_IEC_559_-/* FE_UPWARD defined *//*..*/fesetround(FE_UPWARD);/★..*/#endif3)This implies that a conforming implementation reserves no identifiers other than those explicitlyreserved inthis International Standard.7$4General
WG14/N1336 Committee Draft — August 11, 2008 ISO/IEC 9899:201x 4. Conformance 1 In this International Standard, ‘‘shall’’ is to be interpreted as a requirement on an implementation or on a program; conversely, ‘‘shall not’’ is to be interpreted as a prohibition. 2 If a ‘‘shall’’ or ‘‘shall not’’ requirement that appears outside of a constraint is violated, the behavior is undefined. Undefined behavior is otherwise indicated in this International Standard by the words ‘‘undefined behavior’’ or by the omission of any explicit definition of behavior. There is no difference in emphasis among these three; they all describe ‘‘behavior that is undefined’’. 3 A program that is correct in all other aspects, operating on correct data, containing unspecified behavior shall be a correct program and act in accordance with 5.1.2.3. 4 The implementation shall not successfully translate a preprocessing translation unit containing a #error preprocessing directive unless it is part of a group skipped by conditional inclusion. 5 A strictly conforming program shall use only those features of the language and library specified in this International Standard.2) It shall not produce output dependent on any unspecified, undefined, or implementation-defined behavior, and shall not exceed any minimum implementation limit. 6 The two forms of conforming implementation are hosted and freestanding. A conforming hosted implementation shall accept any strictly conforming program. A conforming freestanding implementation shall accept any strictly conforming program that does not use complex types and in which the use of the features specified in the library clause (clause 7) is confined to the contents of the standard headers <float.h>, <iso646.h>, <limits.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, and <stdint.h>.Aconforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any strictly conforming program.3) 2) A strictly conforming program can use conditional features (such as those in annex F) provided the use is guarded by a #ifdef directive with the appropriate macro. For example: #ifdef _ _STDC_IEC_559_ _ /* FE_UPWARD defined */ /* . */ fesetround(FE_UPWARD); /* . */ #endif 3) This implies that a conforming implementation reserves no identifiers other than those explicitly reserved in this International Standard. §4 General 7