比较两个整数的大小 不用关系比较符(C语言)

如题所述

一楼的做法严格说还是有点问题,因为abs函数本身就用到关系比较符:
nt __cdecl abs (
int number
)
{
return( number>=0 ? number : -number );
}

这是另一种方法,通过取符号位:
#include <stdio.h>

typedef union
{
int nVal;

struct
{
unsigned int abs : 31;
unsigned int flag : 1; // 符号位
} sVal;
} data;

void main()
{
int a, b, c;
data d1, d2;
char res[4] = {'>', '=', '<', '<'};

printf("Input 2 numbers:");
scanf("%d %d", &a, &b);

d1.nVal = a - b; // 判断出 a >= b, 或者 a < b
d2.nVal = d1.sVal.abs - 1; // 判断出 a = b
c = d1.sVal.flag * 2 + d2.sVal.flag; // 0 : a > b, 1 : a = b, 2,3 : a < b

printf("%d %c %d\n", a, res[c], b);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-02
int a,b,max,min;
scanf("%d%d",&a,&b);
max = ((a+b)+abs(a-b))/2;
min = ((a+b)-abs(a-b))/2;
printf("%d %d",max,min);

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网