NAME
3 Terms, definitions, and symbols —
WG14 N1570, clause 3
3
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
- access
- 〈execution-time action〉 to read or modify the value of an object
NOTE 1 Where only one of these two actions is meant, ‘‘read’’ or ‘‘modify’’ is used.
NOTE 2 ‘‘Modify’’ includes the case where the new value being stored is the same as the previous value.
NOTE 3 Expressions that are not evaluated do not access objects.
3.2
- 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
- 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
- behavior
- external appearance or action
3.4.1
- implementation-defined behavior
- unspecified behavior where each implementation documents how the choice is made
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
- locale-specific behavior
- behavior that depends on local conventions of nationality, culture, and language that each implementation documents
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
- undefined behavior
- behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which this International Standard imposes no requirements
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).
EXAMPLE An example of undefined behavior is the behavior on integer overflow.
3.4.4
- 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
EXAMPLE An example of unspecified behavior is the order in which the arguments to a function are evaluated.
3.5
- bit
- unit of data storage in the execution environment large enough to hold an object that may have one of two values
NOTE It need not be possible to express the address of each individual bit of an object.
3.6
- byte
- addressable unit of data storage large enough to hold any member of the basic character set of the execution environment
NOTE 1 It is possible to express the address of each individual byte of an object uniquely.
NOTE 2 A 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-order bit.
3.7
- character
- 〈abstract〉 member of a set of elements used for the organization, control, or representation of data
3.7.1
- character
- single-byte character 〈C〉 bit representation that fits in a byte
3.7.2
- multibyte character
- sequence of one or more bytes representing a member of the extended character set of either the source or the execution environment
NOTE The extended character set is a superset of the basic character set.
3.7.3
- wide character
- value representable by an object of type wchar_t, capable of representing any character in the current locale
3.8
- constraint
- restriction, either syntactic or semantic, by which the exposition of language elements is to be interpreted
3.9
- 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
- diagnostic message
- message belonging to an implementation-defined subset of the implementation’s message output
3.11
- forward reference
- reference to a later subclause of this International Standard that contains additional information relevant to this subclause
3.12
- 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
- implementation limit
- restriction imposed upon programs by the implementation
3.14
- memory location
- either an object of scalar type, or a maximal sequence of adjacent bit-fields all having nonzero width
NOTE 1 Two threads of execution can update and access separate memory locations without interfering with each other.
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.
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
- object
- region of data storage in the execution environment, the contents of which can represent values
NOTE When referenced, an object may be interpreted as having a particular type; see 6.3.2.1.
3.16
- 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
- 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
- runtime-constraint
- requirement on a program when calling a library function
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.
NOTE 2 Implementations that support the extensions in annex K are required to verify that the runtime-constraints for a library function are not violated by the program; see K.3.1.4.
3.19
- value
- precise meaning of the contents of an object when interpreted as having a specific type
3.19.1
- implementation-defined value
- unspecified value where each implementation documents how the choice is made
3.19.2
- indeterminate value
- either an unspecified value or a trap representation
3.19.3
- unspecified value
- valid value of the relevant type where this International Standard imposes no requirements on which value is chosen in any instance
NOTE An unspecified value cannot be a trap representation.
3.19.4
- trap representation
- an object representation that need not represent a value of the object type
3.19.5
- perform a trap
- interrupt execution of the program such that no further operations are performed
NOTE In this International Standard, when the word ‘‘trap’’ is not immediately followed by ‘‘representation’’, this is the intended usage.2)
3.20
⎡ x⎤ ceiling of x: the least integer greater than or equal to x
EXAMPLE ⎡2. 4⎤ is 3, ⎡−2. 4⎤ is −2.
3.21
⎣ x⎦ floor of x: the greatest integer less than or equal to x
EXAMPLE ⎣2. 4⎦ is 2, ⎣−2. 4⎦ is −3.
FOOTNOTES
- Footnote 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 ).