I know it is theoretically undefined behavior and of course bad style. This is the example of a school (I am not the pupil). But why do I get 7 (example a) resp. 1 (example b) out of this operation:
Online example: https://onlinegdb.com/B172lj8k8
a:
#include <stdio.h>
int main()
{
int i = 2;
printf("%d; i=%d", ++i + i++, i);
return 0;
}
b:
#include <stdio.h>
int main()
{
int i = 2;
printf("%d; i=%d", ++i - i++, i);
return 0;
}
In my opinion the output should be 6 and 2.
- Execute i++, yield 2, increment i
- Execute ++i yield 4
- Additon 2 + 4
The other example should be 4 - 2.
Exexcuting the increment in a statement seems to yield the result of the increment immediately, no matter if it is postfix or prefix, which is odd. Or do I get it wrong totally?