不用if、switch、问号表达式判断两个数大小

//不用if等语句判断两个数大小 
#include<stdio.h>
void main()
{
    int a,b,c,d,e,flag;
    printf("please input number:");
    scanf("%d%d",&a,&b);

    //用flag 0,1判断 
    flag=(a>b);
    printf("flag 0,1判断:\n");
    printf("maxer number is :%d\n",a*flag+b*(1-flag));//两者较大者 
    printf("miner number is :%d\n",a*(1-flag)+b*flag);//两者较小者 

    //用数组判断 
    int k[2]={a,b};
    printf("数组判断:\n");
    printf("maxer number is :%d\n",k[a<b]);//两者较大者 
    printf("miner number is :%d\n",k[a>b]);//两者较小者 

    //用移位法判断 
    c=(unsigned)(a-b) >> 31;//(sizeof(int)*8-1);
    d=a*(1-c)+b*c;
    e=a*c+b*(1-c);
    printf("移位法判断:\n");
    printf("maxer number is :%d\n",d);//两者较大者 
    printf("miner number is :%d\n",e);//两者较小者 
}

版权声明:本文为qq_34875598原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。