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.