CBFalconer said:
I think you have a misinterpretation of 'implementaion-defined'.
This means that the action, on a particular implementation, is
defined. However that may well be "*** ABORT in line nnn, integer
overflow ***".
Interestingly, the definition of "implementation-defined behavior"
changed from C90 to C99.
The C90 standard says:
implementation-defined behavior
behavior, for a correct program construct and correct data, that
depends on the characteristics of the implementation and that each
implementation shall document
C99 says:
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
implementation-defined behavior
unspecified behavior where each implementation documents how the
choice is made
So C99 requires the actual behavior to match one of the limited set of
choices allowed by the standard, whereas C90 doesn't seem to impose
such a limitation. But I *think* (though I'm not sure) that it
amounts to the same thing. I think that, for each instance of
implementation-defined behavior, the C90 standard restricts the actual
behavior to a limited number of choices. Thus the limitation is
expressed for each instance throughout the standard, whereas in C99
this is reinforced in the definition.