CISO/IEC2011-All rights reservedISO/IEC9899:2011 (E)3.Terms,definitions,and symbolsFor the purposes of this document, the following terms and 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/IEC2382-1.Mathematical symbols notdefined in this International Standard are to be interpreted according to ISO 80000-2.3.1access(execution-timeaction)toread ormodify the valueof an object2NOTE1Where onlyone ofthesetwo actions ismeant,“read"or“modify"is used3NOTE2Modify"includes thecasewherethenewvaluebeingstored isthesameas thepreviousvalueNOTE3Expressions that arenotevaluateddonotaccessobjects.43.2alignment-requirement that objects of a particular type belocated on storage boundaries withaddresses that are particular multiples of a byte address3.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 appearance or action3.4.11implementation-defined behaviorunspecified behaviorwhereeach implementation documents howthechoice ismadeEXAMPLEAn example of implementation-defined behavior is the propagation of the high-order bit2when a signed integer is shifted right.3.4.2locale-specific behaviorTbehavior that depends on local conventions of nationality, culture, and language that eachimplementation documents3$3.4.2General
© ISO/IEC 2011 − All rights reserved ISO/IEC 9899:2011 (E) 3. Terms, definitions, and symbols 1 For the purposes of this document, the following terms and 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 80000−2. 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:2011 (E)ISO/IEC2011-AllrightsreservedEXAMPLEAn example of locale-specific behavior is whether the islower function returns true for2charactersotherthanthe26lowercaseLatinletters3.4.31undefined behaviorbehavior,upon useof a nonportable or erroneous program construct or oferroneousdata,for which this International Standard imposesno requirementsNOTEPossible undefined behavior ranges from ignoring the situation completely with unpredictable2results,to behaving duringtranslation or program execution in a documented mannercharacteristicof 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 integer overflow33.4.41unspecified behavioruse of an unspecified value, or other behavior where this International Standard providestwoormorepossibilitiesandimposesnofurtherrequirementsonwhichischoseninanyinstanceEXAMPLEAn 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 characterset of the execution environmentNOTE 1It is possible to express the address of each individual byte of an object uniquely.23NOTE2A byte 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, orrepresentation ofdata3.7.11charactersingle-byte character(C) bit representation thatfits in a byte4General$3.7.1
ISO/IEC 9899:2011 (E) © ISO/IEC 2011 − All rights reserved 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
CISO/IEC 2011 -All rights reservedISO/IEC9899:2011 (E)3.7.2multibyte charactersequence of one ormorebytes representing a member of the extended character set ofeitherthesourceortheexecutionenvironmentNOTETheextended character set is a superset of thebasic character set23.7.3wide charactervalue representable by an object of type wchart, capable of representing any characterinthecurrentlocale3.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 programs for, and supports execution offunctions in, a particular execution environment3.13implementation limitrestriction imposedupon programs by theimplementation3.14memory locationeither an object of scalar type, or a maximal sequence of adjacent bit-fields all havingnonzero width5$3.14General
© ISO/IEC 2011 − All rights reserved ISO/IEC 9899:2011 (E) 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 value representable by 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 memory location either an object of scalar type, or a maximal sequence of adjacent bit-fields all having nonzero width §3.14 General 5
ISO/IEC9899:2011 (E)ISO/IEC2011-AllrightsreservedNOTE1Two threads of execution can update and access separate memory locations without interfering2witheach other.NOTE2A bit-field and an adjacent non-bit-fieldmember are in separate memory locations.The same3appliestotwobit-fields,ifone is declared insidea nested structuredeclaration and theotheris not, or if thetwo are separated by a zero-length bit-field declaration, or if they are separated by a non-bit-field memberdeclaration.It is not safe to concurrently update two non-atomic bit-fields in the same structure if allmembers declared between them are also (non-zero-length) bit-fields, no matter what the sizes of thoseinterveningbit-fieldshappentobeEXAMPLEA structure declared as4struct (char a;intb:5,c:11,:0,d:8;struct (int ee:8;)e;contains four separate memory locations: The member a, and bit-fields d and e.ee are each separatememory locations, and can be modified concurrently without interfering with each other.The bit-fields band c together constitute the fourth memory location.The bit-fields b and c cannot be concurrentlymodified, but b and a, for example, can be.3.15objectregion of data storage in the execution environment, the contents of which can representvaluesNOTEWhen referenced, an object may be interpreted as having a particular type; see 6.3.2.1.23.16parameterformal 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 themacro name ina function-like macro definition3.17recommendedpractice1specification that is strongly recommended as being in keeping with the intent of thestandard, but that may be impractical for some implementations3.18runtime-constraintrequirement on a program when calling a library functionNOTE 1Despite the similar terms, a runtime-constraint is not a kind of constraint as defined by 3.8, and2need notbediagnosedattranslationtime.NOTE2Implementations that support theextensions in annexK arerequired to verify that theruntime-3constraints for a library function are not violated by the program; seeK.3.1.4.6$3.18General
ISO/IEC 9899:2011 (E) © ISO/IEC 2011 − All rights reserved 2 NOTE 1 Tw o threads of execution can update and access separate memory locations without interfering with each other. 3 NOTE 2 A bit-field and an adjacent non-bit-field member are in separate memory locations. The same applies to two bit-fields, if one is declared inside a nested structure declaration and the other is not, or if the two are separated by a zero-length bit-field declaration, or if they are separated by a non-bit-field member declaration. It is not safe to concurrently update two non-atomic bit-fields in the same structure if all members declared between them are also (non-zero-length) bit-fields, no matter what the sizes of those intervening bit-fields happen to be. 4 EXAMPLE A structure declared as struct { char a; int b:5, c:11, :0, d:8; struct { int ee:8; } e; } contains four separate memory locations: The member a, and bit-fields d and e.ee are each separate memory locations, and can be modified concurrently without interfering with each other. The bit-fields b and c together constitute the fourth memory location. The bit-fields b and c cannot be concurrently modified, but b and a, for example, can be. 3.15 1 object region of data storage in the execution environment, the contents of which can represent values 2 NOTE When referenced, an object may be interpreted as having a particular type; see 6.3.2.1. 3.16 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.17 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.18 1 runtime-constraint requirement on a program when calling a library function 2 NOTE 1 Despite the similar terms, a runtime-constraint is not a kind of constraint as defined by 3.8, and need not be diagnosed at translation time. 3 NOTE 2 Implementations that support the extensions in annex K are required to verify that the runtimeconstraints for a library function are not violated by the program; see K.3.1.4. 6 General §3.18
CISO/IEC 2011 -All rights reservedISO/IEC9899:2011 (E)3.19valueprecise meaning of the contents of an object when interpreted as having a specific type3.19.11implementation-definedvalueunspecified valuewhere each implementationdocumentshowthechoice is made3.19.2indeterminate valueeither an unspecified value or a trap representation3.19.31unspecified valuevalid value of the relevant type where this International Standard imposes norequirementsonwhichvalueischoseninanyinstanceNOTEAn unspecifiedvalue cannot be a trap representation23.19.41trap representationan object representation that need not represent a value of the object type3.19.51perform a trapinterrupt execution of the program such that no further operations are performedNOTEIn this International Standard, when the word “trapis not immediately followed by2"representation",this is the intended usage.2)3.20[x]ceiling of x: the least integer greater than or equal to xEXAMPLE[2.4]is3,[-2.4]is-2.23.21-[x]floor of x: thegreatest integer less than or equal to xEXAMPLE[2.4]Jis 2,[-2.4]is -3.2For example, “Trapping or stopping (if supported) is disabled." (F.8.2). Note that fetching a trap2) representation might performa trap but is not required to (see 6.2.6.1)7$3.21General
© ISO/IEC 2011 − All rights reserved ISO/IEC 9899:2011 (E) 3.19 1 value precise meaning of the contents of an object when interpreted as having a specific type 3.19.1 1 implementation-defined value unspecified value where each implementation documents how the choice is made 3.19.2 1 indeterminate value either an unspecified value or a trap representation 3.19.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.19.4 1 trap representation an object representation that need not represent a value of the object type 3.19.5 1 perform a trap interrupt execution of the program such that no further operations are performed 2 NOTE In this International Standard, when the word ‘‘trap’’ is not immediately followed by ‘‘representation’’, this is the intended usage.2) 3.20 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.21 1 ⎣x⎦ floor of x: the greatest integer less than or equal to x 2 EXAMPLE ⎣2. 4⎦ is 2, ⎣−2. 4⎦ is −3. 2) For example, ‘‘Trapping or stopping (if supported) is disabled.’’ (F.8.2). Note that fetching a trap representation might perform a trap but is not required to (see 6.2.6.1). §3.21 General 7