Order of evaluation of post-increment operator

aldanor via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Dec 28 13:07:39 PST 2014


On Sunday, 28 December 2014 at 14:51:22 UTC, Gary Willoughby 
wrote:
> 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/

Related thread: 
http://forum.dlang.org/thread/amngdygrlsogzmefzqko@forum.dlang.org#post-l92grb:242q5v:241:40digitalmars.com


More information about the Digitalmars-d-learn mailing list