Order of evaluation of post-increment operator

Gary Willoughby via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Dec 28 06:51:21 PST 2014


I was just taking a look at the following poll[1] about the order 
of evaluation when using the post-increment operator. The 
following D snippet shows an example.

	import std.stdio;

	void main(string[] args)
	{
		auto foo = [0, 0];
		int i = 0;

		foo[i++] = i++; // Woah!

		writefln("%s", foo);
	}

Apparently the C++ equivalent is undefined behaviour but when run 
using D the following result is output:

	[1, 0]

1. Can someone please explain this output?
2. Is there anywhere this order of evaluation is documented?
3. Do you agree this is right?

[1]: 
http://herbsutter.com/2014/12/01/a-quick-poll-about-order-of-evaluation/


More information about the Digitalmars-d-learn mailing list