由關系運算符的性質我們知道
(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是否為閏年