天天看點

關系運算符的妙用

由關系運算符的性質我們知道

(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){

    }else{

        if(year%400==0){

        }else if(year%4==0 && year%100!=0){

    }

}

int main()

{  

    int year;//要判斷的年份

    scanf("%d",&year);

    if(year>0){

        if( f1(year) ){

            printf("Yes");

        }else{

            printf("No");

    return 0;

我們可以明顯看到,代碼十分冗長難讀,寫起來費時費力

但是我們可以利用關系運算符的性質,使我們的代碼更加精煉易讀

int f2(int year)

    //tag判斷是否為閏年

    int tag = (year%4==0) - (year%100==0) + (year%400==0);

    //tag=1是閏年;tag=0不是閏年

    if( tag ){

        return 1;

        if( f2(year) ){

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是否為閏年