首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

宏的表达有关问题

2012-02-12 
宏的表达问题有个这样的宏:#defineBAND(x)((x) 5&&(x) 10)?(x):0)当出现这样的代码时:for(inti4i 11

宏的表达问题
有个这样的宏:
#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;
}

热点排行
Bad Request.