题目:定义一个宏,比较两个数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));
}
本文介绍了一种不使用大于、小于或if语句来比较两个数的方法,通过宏定义实现。提供了两种不同的实现方式,并展示了如何在C语言中使用这些宏进行数值比较。

2564

被折叠的 条评论
为什么被折叠?



