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);
}
回答
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);
}
现在有另一种方法,该程序第一个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);
}
C中不用关系运算符和比较运算符比较两个数的大小
C# 如何 比较两个数的大小,不用比较符
C语言:定义一个宏,比较a、b的大小,不要用大于、小于和IF运算符
C语言程序设计:比较两个数的大小
C语言比较两个数的大小
在EXCEL工作表的公式中,进行数据比较时要使用( )A数学运算数B比较运算式C文本运算式D引用运算式
求c语言中关系运算符,逻辑运算符等等各种运算符的优先级!
C从键盘上输入任意两个数和一个运算符(+、-、*、/),* 根据输入的运算符对两个数计算,并输出结果
比较下列各组数中两个数的大小
比较下列各组数中两个数的大小,
比较下列各组数中两个数的大小.急!
数学指数对数怎么运算和比较大小