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