With the post fix operator you create three copies of the object/variable (NO MATTER WHAT, even if you overloaded, since they have different operations). Now obviously this doesn't seem that big since you can use it only on integers ... but what if you did it in a recursive loop of a big ass tree and every node pointed to a linear linked list?
I'd hope if you came to that situation and you weren't using globals (and you really shouldn't they're more hassle then they're worth) then you better be passing a pointer by value, if not, you're passing actual data by value ... you're making a nice old copy of the entire thing. (You can use by reference to avoid that, obviously)
But just imagine this: You do all that, and you have three function calls, one with in each function. So in your main you call a function passing this monstrosity of a data structure ... it calls a function ... then that calls a function ... Depending on the size of your tree and lists you could be in some deep s**t.
What if this thing is a tree of information in a banking service?
There's so many goofs you can do with simple crap, like putting two plus or minus signs in back instead of front ... or forgetting an ampersands.
HOWEVER, post fix DOES have a purpose. You use post fix if AND ONLY IF you want to inc or dec the value AFTER it is used in an expression.
This is useful in pipelining ... everywhere else its probably a better idea to suck it up and add a line of code saying "++ var;" instead of making three god damned copies of the thing on the heap.
Its funny, I'd say take a class on optimizing code (I never did, but this is the way I learned it) but I've seen some of their course work at certain school .... and they suck balls. They're using post fix and all sorts of garbage.
[Another Note]
I'd suggest learning C++ first, just because the language has so much power, it will take longer to learn, and when you're done, you inadvertently know C ... thats that. You have to memorize the fact that there are no classes (this no ->) and you're good to go. Going the other way around is much harder.
And again ... C is really only good for building fast programs. I don't mean you build them fast, I mean they run fast. C++ tends to have overhead, because you have so much freedom (you do in C as well, just not as much).
C++ suits a programmer at any level of capabilities ... unless they go out and get ahead of themselves (which is most often the case).
C has too many restrictions for someone to be really happy with it if its their first language.
But then there are die hards out there (like my old CS instructor) who's first language is assembly (Or Fortran ... bleh).
But maybe that's just my opinion ...
Horn, Dude, you fail the class if you're caught doing that ... and if they really get pissed at you they can very well throw you out of school. And I mean at my school, not yours. Like, if you recycle your programs, such as print it out and throw it in the recycle bin. It can very well show up as someone else's assignment and you both fail ... no questions. However, its not as hard as it sounds, since if you think you left something like that somewhere you can inform your instructor and they will know that a duplicate of your work might be coming in without your name on it.
Jeff, Don't worry ... Microsoft releases code all the time, I'm sure your code would be beautiful in comparison