功能的含义

时间:2013-07-16 02:54:57

标签: php c function variables operators

这是我不理解的功能:

$year = date("Y");
$leapYear = false;
if((($year%4==0) && ($year%100==0)) || ($year%400==0))
    $leapYear = true;

这是否意味着,如果(($year is divided by 4 but not divided by 100) or (the year is divided by 400))是闰年?

我是PHP的新手,请任何人帮助我理解这些陈述。

3 个答案:

答案 0 :(得分:2)

我认为您可能会感到困惑,因为您提供的代码没有找到闰年。闰年可以被4整除但不是100 ..除非它们也可以被400整除。如果你翻转逻辑,它就更容易看。如果它可以被400整除,那么它就是闰年,无论如何。否则,它是闰年,如果它可以被4整除而不能被100整除。

// pseudocode
if ( year % 400 == 0  || (year % 4 == 0 && year % 100 != 0))
    return true;
else
    return false;

你可以玩它,然后说:

return year % 400 == 0  || (year % 4 == 0 && year % 100 != 0)

&&意味着双方必须true以便&&返回true

答案 1 :(得分:0)

这基本上是伪代码

中的内容
if(year is divisible by 4 or 100) {
leapyear = true
} else if (year is divisible by 400) {
//this will never be hit because it would meet the first case
leapyear = true
}

答案 2 :(得分:-1)

根据您的代码,您的第二个猜测是正确的。

if((($year % 4==0) && ($year % 100==0)) || ($year % 400==0))

意味着这些必须属于闰年:

  1. ($year%4==0) && ($year%100==0)
  2. $year%400==0
  3. 在这种情况下,一年是闰年:

    • 年可被4整除,可被100整除

    OR

    • 年可被400整除

    但是,您发布的代码错误,因为它没有正确定义闰年。

    一年是leap year,如果它可被4整除,除非它可被100整除且不能被400整除。所以在if语句中($year % 100 == 0)应为{ {1}}

    所以正确的逻辑就是这样:

    ($year % 100 != 0)

    关于if ((($year % 4 == 0) && ($year % 100 != 0)) || ($year % 400 == 0)) $leapYear = true;

    &&表示AND,表达式&&为true或false。

    根据定义,A && B仅在A && BA都为真时才为真。如果其中任何一个为假,则B为假。