While the respective language standards or specifications may impose a range of possible behaviors, the exact behavior depends on the implementation and may not be completely determined upon examination of the program's source code.
[2] Failing to explicitly define the exact behavior of every possible program is not considered an error or weakness in the language specification, and doing so would be infeasible.
[1] In the C and C++ languages, such non-portable constructs are generally grouped into three categories: Implementation-defined, unspecified, and undefined behavior.
In C++, it is defined as "behavior, for a well-formed program construct and correct data, that depends on the implementation.
[2] In some other languages, such as Java, the order of evaluation of operands and function arguments is explicitly defined.