宏的表达问题
有个这样的宏:
#define BAND(x) ((x)> 5 && (x) <10) ? (x):0)
当出现这样的代码时:
for(int i=4; i <11; ++i)
{
}
[解决办法]
宏被替换后的实际代码:
((++a)> 5 && (++a) <10) ? (++a):0
似乎执行了三次++a,
可修改为:
int a1 = ++a;
cout < < BAND(a1) < < endl;
[解决办法]
sorry 打错了
for(int i=4;i <11;++i)
{
int a = i ;
++a; //或者直接在上面 int a = i + 1;
cout < <BAND(a) < <endl;
}