define误区小记

先贴代码:

#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一下。

define误区小记

结果很明显是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();
}

结果:
i,j值
此时我们拿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、请不要忘记就地展开。直接把式子写出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值