首页 > 解决方案 > 你能解释一下这段代码发生了什么吗?

问题描述

请解释代码中发生了什么。

我尝试了 if else 不起作用。

#include <stdio.h>

int isLeapYear(int year)
{
   return ((!(year % 4) && year % 100) || !(year % 400));
}

标签: cleap-year

解决方案


检查给定年份是否为闰年的方法是

  1. 如果年份可以被 4 整除,则转到步骤 2。否则,转到步骤 5。
  2. 如果年份可以被 100 整除,则转到步骤 3。否则,转到步骤 4。
  3. 如果年份可以被 400 整除,则转到步骤 4。否则,转到步骤 5。
  4. 这一年是闰年。
  5. 年份不是闰年。

现在将您的if条件应用于上述步骤。

((!(year % 4) && year % 100) || !(year % 400))

1. !(year % 4)  --> is step1 
2. year % 100   --> is step2 
3. !(year % 400) --> is step3

推荐阅读