+ 1
Pre & post fix together - Why is not working?
int x=1; cout << ++x++; //Wrong but: cout << (++x)++; //OK is Ok. - Why?
2 Respostas
+ 2
This is just a guess, but I think ++x++ is the same as ++(x++), since the postfix operation seems to have a higher priority.
++(x++) doesn't work, because it basically says: "increment x++ before printing it", but the x++ part would already do the printing before the prefix operation took effect.
(++x)++, however, increments x (postfix) after printing it after incrementing It (prefix), so there is no conflict between the prefix and the postfix operation and therefore it works this way.
+ 1
I am not having much luck finding a concrete answer online, but here are my thoughts:
++ is a unary operator. Since it works with (++x)++ it seems like an order of operations deal, but notice you cannot do ++(x++) either. Being a unary operator may explain why ++x++ does not work, but that doesn't explain ++(x++).
If anyone has a better answer, please chime in as I would like to know the exact reason.