编程论坛
注册
登录
编程论坛
→
C++教室
[求助]带#define的求最大值,为什么这样错
ljfabcd
发布于 2007-04-13 22:03, 821 次点击
#include<iostream.h>
#define max(a,b) a>b?a:b
void main()
{
cin>>a>>b;
cout<<max(a,b)<<endl;
}
我是菜鸟,不知道上面那个为什么不可以,应给怎么用呢?
6 回复
#2
aipb2007
2007-04-13 22:07
这样只是把程序中max(a,b)出现的地方用a>b?a:b代替,不能实现函数功能!
#3
I喜欢c
2007-04-13 22:29
a,b没定义呀!
能通过编译?
#4
PcrazyC
2007-04-14 09:21
#include<iostream.h>
#define max(a,b) (a>b?a:b) .//加一个括号,不然替换以后,在那个式子中"<<"运算符的优先级比较高,所以会报错的
void main()
{
int a,b;
cin>>a>>b;
cout<<max(a,b)<<endl;
}
#5
I喜欢c
2007-04-14 12:22
#include<iostream.h>
#define max(a,b) ((a)>(b)?(a):(b))
void main()
{
int a,b;
cin>>a>>b;
cout<<max(a,b)<<endl;
}
//这样岂不更稳当?
#6
fromcsu
2007-04-15 00:11
#define max(a,b) ((a)>(b)?(a):(b))
这样是最保险的了,首先这种宏定义在程序中就是简单的替换,所以对于表达式要括起来,避免因为和其他的表达式在一起的时候出现逻辑问题,再者a,b也可能是表达式,所以要分别括起来更稳妥些
#7
ljfabcd
2007-04-15 18:31
谢谢各位指导,
1