题目:定义一个宏,比较两个数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));
}
宏定义比较两个数
本文介绍了一种使用宏定义来比较两个数值大小的方法,避免使用传统的条件语句或比较运算符。通过位操作实现了对两个数值大小的判断,并考虑了不同机器上的字长问题。
9019

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



