由关系运算符的性质我们知道
(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是否为闰年