作业帮 > 综合 > 作业

C中不用关系运算符和比较运算符比较两个数的大小

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 21:45:51
C中不用关系运算符和比较运算符比较两个数的大小
回答
int fn(int i)
{
\x05return i>>31;
}
int main(void)
{
\x05int a=1,b=2;
\x05if(fn(a-b))
\x05{
\x05\x05printf("%d\n",a);
\x05}
\x05else
\x05{
\x05\x05printf("%d\n",b);
\x05}
\x05return 0;
}
int max3(int x,int y)
{
\x05unsigned int z=x-y;
\x05z>>=31;
\x05return *(&x+z);
}
你程序里if(fn(a-b))实际上是if(!fn(a-b)==0),仍然使用了比较,而且只要使用if语句,对应的汇编代码就是cmp--比较. fn(a-b)函数的功能是判断两数之差的正负号,达到比较的目的.
现在有另一种方法,该程序第一个printf直接计算出大数99,第二个printf直接计算出小数50:
是不是非常简单呢?
int main(void)
{
int a=50,b=99;
printf("%d\n",(a+b+abs(a-b))/2);
printf("%d\n",(a+b-abs(a-b))/2);
}