(Also posted on stack overflow: http://stackoverflow.com/questions/32705320/undefined-behavior-or-does-swift-have-sequence-points)
In C/C++, the following code exhibits both undefined and unspecified behaviour:
int i = 0;
int j = i++ + i++ + ++i;
The order of evaluation of operands is unspecified, and side effects on the same object
i
are unsequenced relative to each other.Swift was designed as a safe language, so what is the corresponding situation here? Is the result of
var i = 0
let j = i++ + i++ + ++i
well-defined? Can one conclude from the language reference in the Swift book that
j == 4
?