函数参数入栈与求值顺序

2018-03-27  本文已影响19人  downdemo
#include <iostream>
using namespace std;

int f1(){ cout << 1; return 1; }
int f2(){ cout << 2; return 2; }
int f3(){ cout << 3; return 3; }
void f(int, int, int){}

int main()
{
    f(f1(), f2(), f3());
}
// 打印结果为:321
#include <iostream>
int main()
{
    int a = 1;
    std::cout << a++ << ++a << a;
}
// 如果按照从右到左顺序,应当打印221,打印结束后a为3
// 但实际打印结果为:233
#include <iostream>
int main()
{
    int a = 1;
    std::cout << a++ << ++a << a << a++;
}
// 打印结果为:3441
// 最后的a在寄存器中保存1,第一个a在寄存器中保存3
上一篇下一篇

猜你喜欢

热点阅读