先贴代码:
#include <QCoreApplication>
#include <iostream>
#define A(x) x+x
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int i=5*A(4)*A(6);
cout<<i<<endl<<"hello world!"<<endl;
return a.exec();
}
大家可能注意到了我是在QT里面写的,没有用过的可以忽略QT部分。因为我刚刚在centos里面装了QT,所以小试牛刀,hello一下。
结果很明显是50,而不是5*8*12=480。计算规则明显应如下:5*4+4*6+6=50。就地展开即可,不要随便加括号。
2016.6.23更改:
代码:
#include <QCoreApplication>
#include <iostream>
#define A(x) x+x
#define B(x) (x+x)
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int i=5*A(4)*A(6),
j=5*B(4)*B(6);
cout<<"i\t"<<i<<endl
<<"j\t"<<j<<endl
<<"hello world!"<<endl;
return a.exec();
}
结果:
此时我们拿x+x和(x+x)做了比较,显然define是就地展开。
2016.7.8更改:
1、代码:
#include <iostream>
#define A(x) x*x
using namespace std;
int main()
{
int t=A(6)/A(4);
//6*6/4*4=36
cout<<t<<endl;
return 0;
}
2、结果:
3、请不要忘记就地展开。直接把式子写出来。