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

c++编程思想中的关于宏的一个有关问题

2012-02-25 
c++编程思想中的关于宏的一个问题程序如下:#define BAND(x) (((x)5&&x10)?(x):0)void main(){for(int i

c++编程思想中的关于宏的一个问题
程序如下:
#define BAND(x) (((x)>5&&x<10)?(x):0)

void main() 
{
for(int i=4;i<7;i++)
{
int a=i;
cout<<"a="<<a<<endl<<'\t';
cout<<"BAND(++a)="<<
BAND(++a)<<endl;
cout<<"\ta="<<a<<endl;
}
}
输出结果是
a=4
  BAND(++a)=0
  a=5
a=5
  BAND(++a)=8
  a=8
a=6
  BAND(++a)=9
  a=9


为什么第二次调用宏a变得这么大啊,求高手解答

[解决办法]
短路问题
第一次4+1>5不成立,表达式后面的都不做了, 自加只执行一次
后两次5+1>5成立, 自加执行三次
[解决办法]
宏中你每个X都被替换成++a 阿

热点排行