Q:

Which default argument is evaluated first and why?

I have three functions, funt1(), funt2(), and funt3().
int funt1()
{
    cout<<"funt1 called"<<endl;
    return 10;
}

int funt2()
{
    cout<<"funt2 called"<<endl;
    return 20;
}

void funt3(int x=funt1(), int y=funt2())
{
    cout << x << y << endl;
}

My main function:
int main()
{
    funt3();
    return 0;
}

When I am calling funt3() in my main() method, why is funt1() is called first, and then funt2()?

A:

It depends on your compiler. Others may call funct2() first. Neither C or C++ guarantee the order of evaluation of function arguments.
See Parameter evaluation order before a function calling in C

