您的位置:首页 > 其它

几道笔试题的解法(八)

2010-03-31 23:41 375 查看
题目:请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。

分析:本题考查的是位操作和问号操作符的知识。

代码如下:

1. #include <limits>

template<typename T>

T Max(const T& a, const T&b)

{

return (a - b) & (numeric_limits<T>::max() + 1 ) ? b : a;

}

2.

template<typename T>

T Max(const T& a, const T&b)

{

return (a - b) & (1 << (sizeof(T) * 8 - 1)) ? b : a;

}

3.#define max(a,b) (((a)-(b))&(1<<31))?(b):(a) //这个显得只针对于int
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: