Why are you even talking about assembler - this is C.

More traps and pitfalls, just in case you think that getting too "chummy" with the compiler by peering at the generated assembler will be useful.
http://cboard.cprogramming.com/showt...ight=undefined
http://cboard.cprogramming.com/showt...ight=undefined
http://cboard.cprogramming.com/showt...ight=undefined
The board is full of this type of stuff.

Case in point
> printf() sets eax to the no of characters it printed and eax is not changed anymore
My processor is a MIPS, what on earth are you talking about?