It does not have to be consistent, it just needs to be documented, the draft C99 standard section 3
Terms, definitions, and symbols defines it like so:
implementation-defined behavior
unspecified behavior where each implementation documents how the choice is made
For example the gcc
docs has a section C Implementation-defined behavior.
The C++ draft standard also has a similar definition and in section 1.9
Program execution paragraph 2 says:
Certain aspects and operations of the abstract machine are described in this International Standard as implementation-defined (for example, sizeof(int)). These constitute the parameters of the abstract machine. Each implementation shall include documentation describing its characteristics and behavior in these respects.6[...]