最近由于工作需要,一直在学习c语言,接触到了一些表达式很是经典,特详细说明一下。

(year%4!=0)||(year%100==0&&year%400!=0)
是判断year是否“不是闰年”。

闰年一般两种情况:
a,要被4整除,但不能被100整除。如2012年。
b,能被100整除的年份,还能被400整除才是闰年。例如1600年,但1900就不是闰年,因为1900能被100整除,但不能被400整除。

相反一个年份不是闰年的两种情况:
a,不能被4整除。即对应代码(year%4!=0)
b,能被100整除,year%100==0,但不能被400整除year%400!=0。两个是且的关系,因此对应代码(year%100==0 && year%400!=0)
上面a,b两种情况是“或”的关系,也就是满足其中之一就不是闰年。因此合起来代码为
(year%4!=0) || (year%100==0 && year%400!=0)
当year不是闰年时,上面整个表达式的值为1,是闰年时,表达式值为0

程序判断时,是先判断||的左边,即(year%4!=0),若满足则表达式返回为1,||右边不用判断。若不满足,继续判断||的右边(year%100==0 && year%400!=0),对于&&,也是先判断左边year%100==0,若其不满足,则返回为0,右边year%400!=0将不再判断,否则继续判断year%400!=0,若满足则返回为1,否则返回为0。 

 

—————————————————————————————————

特别声明:--

一、本文为原创,著作权及使用权为(作者笔名:闪电cto)本人所有。 ­

二、本文首发于51cto个人博客(http://xudeqiang.blog.51cto.com)。  ­

三、本文只供互联网上的读者分享,不供共享范畴,希知。 ­

四、未经许可严禁对本文作修改、节选、断章性质的处理。 ­

五、可转载,但必须注明原文章首发的出处网址,及文章作者,严禁复制。 ­

六、如若转摘用于杂志网络媒体新闻,必须通知作者得到允许后方可,需收稿费。­

七、作者联系信息:QQ:306718122   邮箱levinboy@foxmail.com

——————————————————————————————