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

定义宏函数的有关问题

2012-02-28 
定义宏函数的问题!# define MAX(a,b) ((a)(b)?(a):(b))#include iostream.hvoid main(){int a 1,b

定义宏函数的问题!
# define MAX(a,b) ((a)>(b)?(a):(b))
#include <iostream.h>

void main()
{
  int a = 1,b = 0;
  int c = MAX(a++,b);
  cout<<a<<" "<<c;
}

输出结果是3 2
谁能给我解释一下a为什么是3

[解决办法]
MAX函数里面加了1次
MAX函数返回值后又加了一次
[解决办法]
((a) >(b)?(a):(b))
int c = MAX(a++,b); 
被替换为
(a++)>(b) ? (a++) : (b);

//vc的处理是:计算 a++ > b 为真a的值2
//取(a++)赋值给c后,c的值为2,a的值为3

[解决办法]
max不是函数,只是一个宏定义,编译的时候只是简单的替换
int c = MAX(a++, b);
变成:
int c = a++ > b ? a++ : b;
也就是:
int c;
if (a++ > b)//此后a = 2, b = 0
{
c = a++;//此后a = 3, c = 2
}
else
{
c = b;
}
由于a = 1, b = 0;
运行结果就是
a = 3, b= 0, c = 2;

热点排行