C++編譯器默認使用的是 __cdecl 模式,參數是通過棧傳遞的,因此是從右到左的傳參順序。
int f(int a, int b, int c) { return 0; } int main(){ return f(printf("a"),printf("b"),printf("c")); }
函數的參數是通過棧傳遞的。因此參數從右往左入棧順序是:printf("c"),printf("b"),printf("a")。依次計算出結果:cba
參數傳遞標准

C,C++中
cdecl ,stdcall 自右向左 傳到堆棧
pacal,自左向右傳遞到堆棧
register 無方向,因為沒有用到堆棧
fastcall 使用寄存器的參數也沒規定方向,並且至少有三個寄存器,和兩個寄存器的兩種版本
cdecl ,stdcall 自右向左 傳到堆棧
pacal,自左向右傳遞到堆棧
register 無方向,因為沒有用到堆棧
fastcall 使用寄存器的參數也沒規定方向,並且至少有三個寄存器,和兩個寄存器的兩種版本