这是因为各种语言默认的调用约定是不同的。在调用函数的时候, 参数的传递是通过堆栈进行的,也即调用者要把传递给函数的参数入栈,函数从堆栈里取出相应的值再使用。这就涉及到各个参数的入栈顺序(也即先后计算顺序)。C语言通常使用自右向左的入栈方式。
比如printf("%i %i %i",1,2,3),传递给printf()的三个参数入栈顺序3,2,1,在printf内部打印他们的顺序则是1,2,3,因为栈的特性是先进后出/后进先出。将此代码反汇编一下即可明白。
菜鸟初学,有不对的地方还望包涵。
[
本帖最后由 ansic 于 2011-5-1 10:26 编辑 ]