Order of evaluation for most of the binary operators is left undefined to give the compiler opportunities for optimization. This strategy presents a trade-off between efficient code generation and potential pitfalls in the use of the language by the programmer. Do you consider that an acceptable trade-off? Why or why not?
This trade-off is acceptable. The programmer is responsible for understanding how his code is interpreted and knowing what is and is not compliant, standard code.