不用大于、小于、if语句比较两个数的大小

题目:定义一个宏,比较两个数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));
}

猜你喜欢

转载自blog.csdn.net/skeleton703/article/details/8770241