In C/C++, the second statement in
int i = 0;
int j = i++ + i++ + ++i;
invokes both
i
are unsequenced relative to each other.See for example
Now, given that Swift was designed as a safe language, 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
?
The question was answered by Apple developer and Swift designer Chris Lattner in the Apple Developer Forum https://forums.developer.apple.com/thread/20001#63783:
Yes, the result of that expression will always be 4. Swift evaluates expressions left to right, it isn't undefined or implementation defined behavior like C.
Chris also added:
That said, if you write code like that, someone trying to maintain it will probably not be very happy with you
Agreed! It was meant as an extreme example to demonstrate the problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With