C语言: 定义一个宏,比较a、b的大小,不要用大于、小于和IF运算符

C语言: 定义一个宏,比较a、b的大小,不要用大于、小于和IF运算符

代码如下:


通过移位运算来判定整数的正负性。

#include
using namespace std;

#define MAX(A,B) (((A)-(B))>>31 ? (B) : (A))

int main()
{
int a = 10, b = 100;
cout << MAX(a, b) << endl;
}
#define COMPARE(a, b) ((a==b) ? 0 : ((a>b) ? 1 : -1))
这个宏定义可以计算出以下3种情况:
a=b COMPARE(a, b) = 0;
a>b COMPARE(a, b) = 1;
a
我看到有人回答用移位的方法来判断符号位,弱弱的问一句,如果a,b不是32位int型怎么办?
#define min(a,b) (((a)<(b))?(a):(b))

热心网友回答的比较全面。
#define MAX(a,b) (a>b?a:b)
← 上一篇: 下一篇: →