关系运算符的妙用

 
由关系运算符的性质我们知道
(a==b),(a!=b),(a>=b),(a<=b)的返回值有两种
分别是 1 或 0
因此我们可以利用这个性质编写一些简易美观的代码

 

 

例:判断是否为闰年

 

通常情况下,我们使用if-else语句来判断:
--------------------------------------
#include <stdio.h>

 

int f1(int year)
{
    if(year<4){
        return 0;
    }else if(year<100){
        if(year%4==0){
            return 1;
        }
    }else if(year<400){
        if(year%4==0 && year%100!=0){
            return 1;
        }
    }else{
        if(year%400==0){
            return 1;
        }else if(year%4==0 && year%100!=0){
            return 1;
        }
    }
}

 

int main()
{  
    int year;//要判断的年份
    scanf("%d",&year);
    if(year>0){
        if( f1(year) ){
            printf("Yes");
        }else{
            printf("No");
        }
    }

 

    return 0;
}

 

--------------------------------------
我们可以明显看到,代码十分冗长难读,写起来费时费力



但是我们可以利用关系运算符的性质,使我们的代码更加精炼易读
--------------------------------------
#include <stdio.h>

 

int f2(int year)
{
    //tag判断是否为闰年
    int tag = (year%4==0) - (year%100==0) + (year%400==0);
    //tag=1是闰年;tag=0不是闰年
    if( tag ){
        return 1;
    }else{
        return 0;
    }
}

 

int main()
{  
    int year;//要判断的年份
    scanf("%d",&year);
    if(year>0){
        if( f2(year) ){
            printf("Yes");
        }else{
            printf("No");
        }
    }



    return 0;
}

 

--------------------------------------
1)其中tag的值始终为1或0,方便if-else判断
2)不需要判断year与4,100,400的大小关系
{
当0<year<4时,      (year%4==0)为0      (year%100==0)为0     (year%400==0)为0;
当4<=year<100时,   (year%4==0)为1或0; (year%100==0)为0     (year%400==0)为0;
当100<=year<400时, (year%4==0)为1或0; (year%100==0)为1或0  (year%400==0)为0;
当year>400时,      (year%4==0)为1或0; (year%100==0)为1或0  (year%400==0)为1或0;
}
3)加上适当的注释有助于阅读
4)tag的值可以用在多处用于判断year是否为闰年

 

posted @ 2021-10-16 18:41  Spoiler_蓝灯  阅读(96)  评论(0)    收藏  举报