代码:
01
#include <iostream>
02
using
std::cout;
03
using
std::endl;
04
05
#define A(x) (x)*(x);
06
#define B(x) x*x;
07
void
main(){
08
int
a,b=
3;
09
a=A(b+
2);
10
std::cout<<a<<std::endl;
11
a=B(b+
2);
12
std::cout<<a<<std::endl;
13 }
02
03
04
05
06
07
08
09
10
11
12
13
A(X)和B(X),差别只在于后面 x有没有加括号。结果却不一样:
第一种情况带入后其实是:(b+2)*(b+2)=(5)*(5)=25;
第二种情况带入后其实是:b+2*b+2=3+2*3+2=11。