题目:定义一个宏,比较两个数a和b的大小,不能使用大于、小于或if语句。
考虑以下两种方法,注意不同机器上的字长问题。
#include <stdio.h>
#define Max(a,b) (((long)((a)-(b)))>>(sizeof(long)*8-1)?b:a)
#define max(a,b) ((((a)-(b))>>(sizeof((a)-(b))*8-1))?b:a)
int main()
{
printf("%ld\t%ld\n", Max(123,-123), max(-567,-525));
}