Question: What's the value of i++ + i++?
Answer:
It's undefined. Basically, in C and C++, if you read a variable twice in an
expression where you also write it, the result is undefined. Don't do that.
Another example is:
v[i] = i++;
Related example:
f(v[i],i++);
Here, the result is undefined because the order of evaluation of function
arguments are undefined. Having the order of evaluation undefined is claimed to
yield better performing code. Compilers could warn about such examples, which
are
typically subtle bugs (or potential subtle bugs). I'm disappointed that after
decades, most compilers still don't warn, leaving that job to specialized,
separate, and underused tools.