读书人

#define Mid(a,b,c) (a+b+c) - ((agt;b?

发布时间: 2012-06-15 19:37:05 作者: rapoo

#define Mid(a,b,c) (a+b+c) - ((a>b?a:b)>c?(a>b?a:b):c)-((a<b?a:b)<c?(a<b?a:b):c)
有没有更简单的方法

C/C++ code
#define Mid(a,b,c) (a+b+c) - ((a>b?a:b)>c?(a>b?a:b):c)-((a<b?a:b)<c?(a<b?a:b):c)
返回中间大的值

[解决办法]
我叫上另外一个同学
他是这样写的
#include <iostream>
using namespace std;

#define A(a,b,c) (a+b+c)
#define B(a,b,c) ((a>b?a:b)>c?(a>b?a:b):c)
#define C(a,b,c) ((a<b?a:b)<c?(a<b?a:b):c)

#define Mid(a,b,c) A(a,b,c) - B(a,b,c) - C(a,b,c)

int main(int argc, char* argv[])
{
int s=13,d=12,f=14;
cout << "Mid=" << Mid(s,d,f) <<endl;
return 0;
}
探讨
这样啊...感觉还是有灾难的感觉...
我再试试吧

引用:
这个,感觉好像在看灾难片一样...(个人看法...可能菜鸟我太孤陋寡闻了)

#include <iostream>
using namespace std;
//#define Mid(a,b,c) (a+b+c) - ((a>b?a:b)>c?(a>b?a:b):c)-((a<b?a:b)<c?(a<……

[解决办法]
C/C++ code
#define Min(x,y)    (x<y?x:y)#define Max(x,y)    (x>y?x:y)#define Mid(x,y,z)    Max(x,y)>z?Max(Min(x,y),z):Min(Max(x,y),z)
[解决办法]
调用宏时要将参数用()括住。
[解决办法]
#define Mid(a,b,c) ( ((b-a)*(a-c)>0?a:0) + ((a-b)*(b-c)>0?b:0) + ((a-c)*(c-b)>0?c:0) )
[解决办法]
#define MAX(a,b) (((a) + (b)) + abs((a) - (b))) / 2
#define MIN(a,b) (((a) + (b)) - abs((a) - (b))) / 2
#define MID(a,b,c) MIN( MAX(a,b) , MAX(b , c))
[解决办法]
#define mid(a,b,c) (a>b&&a>c)?(b>c?b:c):((a<b&&a<c)?(b<c?b:c):a)
[解决办法]
参数未带()的宏基本上都不支持负数。
[解决办法]
#define _MAX_(A, B, C) ((A>B)&(A>C))?A:(((B>C)&(B>A))?B:C)
#define _MIN_(A, B, C) ((A<B)&(A<C))?A:(((B<C)&(B<A))?B:C)
#define _MID_(A, B, C) ((A>B)^(B>C))?(((A>C)^(C>B))?A:C):B
[解决办法]
为了对称,还可以这样定义:
#define _MID_(A, B, C) ((A>B)^(A>C))?A:(((B>C)^(B>A))?B:C)
#define _MID_(A, B, C) ((A<B)^(A<C))?A:(((B<C)^(B<A))?B:C)

探讨

#define _MAX_(A, B, C) ((A>B)&(A>C))?A:(((B>C)&(B>A))?B:C)
#define _MIN_(A, B, C) ((A<B)&(A<C))?A:(((B<C)&(B<A))?B:C)
#define _MID_(A, B, C) ((A>B)^(B>C))?(((A>C)^(C>B))?A:C):B

[解决办法]
探讨
引用:

#define Mid(a,b,c) ( ((b-a)*(a-c)>0?a:0) + ((a-b)*(b-c)>0?b:0) + ((a-c)*(c-b)>0?c:0) )


貌似还是我的简单哈。。哈哈

读书人网 >C++

热点推荐