| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 819 人关注过本帖
标题:[求助]带#define的求最大值,为什么这样错
只看楼主 加入收藏
ljfabcd
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-4-2
收藏
 问题点数:0 回复次数:6 
[求助]带#define的求最大值,为什么这样错
#include<iostream.h>
#define max(a,b) a>b?a:b
void main()
{
cin>>a>>b;
cout<<max(a,b)<<endl;
}

我是菜鸟,不知道上面那个为什么不可以,应给怎么用呢?
搜索更多相关主题的帖子: 最大值 define 
2007-04-13 22:03
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

这样只是把程序中max(a,b)出现的地方用a>b?a:b代替,不能实现函数功能!


Fight  to win  or  die...
2007-04-13 22:07
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
a,b没定义呀!
能通过编译?

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-13 22:29
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
#include<iostream.h>
#define max(a,b) (a>b?a:b) .//加一个括号,不然替换以后,在那个式子中"<<"运算符的优先级比较高,所以会报错的
void main()
{
int a,b;
cin>>a>>b;
cout<<max(a,b)<<endl;
}

雁无留踪之意,水无取影之心
2007-04-14 09:21
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
#include<iostream.h>
#define max(a,b) ((a)>(b)?(a):(b))
void main()
{
int a,b;
cin>>a>>b;
cout<<max(a,b)<<endl;
}

//这样岂不更稳当?

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-14 12:22
fromcsu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-14
收藏
得分:0 
#define max(a,b) ((a)>(b)?(a):(b))
这样是最保险的了,首先这种宏定义在程序中就是简单的替换,所以对于表达式要括起来,避免因为和其他的表达式在一起的时候出现逻辑问题,再者a,b也可能是表达式,所以要分别括起来更稳妥些
2007-04-15 00:11
ljfabcd
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-4-2
收藏
得分:0 

谢谢各位指导,

2007-04-15 18:31
快速回复:[求助]带#define的求最大值,为什么这样错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019657 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved