For builtin types, it really doesn't matter. But in C++, you can write and operator++ for your own class. And then it might matter, becaure postfix ++ has to create a copy of the object so that the old value can be returned. If you don't need the return value, that copy is unnecessary. If the compiler doesn't do named return value optimization, that copy might even need to be copied again, and all that just to throw the result away.