> Because function arguments are pushed in reverse order in C and funnily enough, GCC actually does that even though that's crazy.
Actually, pushing function arguments right-to-left means that the first argument ends up on top of the stack - and that makes vararg-style functions possible.
Think about it - a called vararg method must be able find the fixed arguments to figure out how many arguments it actually gets.