C Standard Terms for Behaviour
Here are some excerpts from the final drafts of the C99 and C11 standards n1256.pdf and n1570.pdf, respectively.
-
§3.4.0: 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.