关于调用函数得到个值

int MA ( int x )
{ return x∗( x- 1 ) ;

} 
int main ( ) { 
int a= 1, b= 2;
cout< < MA ( 1+ a+ b ) < < endl;
return 0;
}

当程序是什么的时候调用的时候直接把(1+1+2)给x 算出来的是1+1+2∗( 1+1+2- 1 ) 等于8的?

定义宏函数的时候可以

#include <iostream>
using namespace std;
#define ma(x) x*(x-1)
int MA(int x)
{ 
    return x*(x-1);
}
int main()
{
    int a=1, b=2;
    cout<< MA(1+a+b) << endl;
    cout<< ma(1+a+b) << endl;
    return 0;
}

结果:

12
8

img

你写的那个是宏替换。
函数调用是先要把函数的实参计算出来,把实参的结果传给形参,然后形参在函数内计算。