year%100!=0与year%400==0在“||”之间互换位置以后 为什么答案不一样!!!
标题如是...year%100!=0与year%400==0在“||”之间互换位置以后 为什么答案不一样!!!
标题如是...year%100!=0与year%400==0在“||”之间互换位置以后 为什么答案不一样!!!
2016-07-26
楼上的说法有误,我更正一下
首先我们的闰年规则是:每四年一闰,但是我们遇上整百年不闰,过四百年再闰。换算陈代码就是:
year%4==0(每四年一闰)&&year%100!=0(整百年不闰)||year%400==0(过四百年再闰)
这里难理解的其实是逻辑运算符的优先级问题,这里我告诉你逻辑【与】的运算优先级大于逻辑【或】的运算优先级,现在你只需要知道一下就行了。所以这里的代码非得这么写才对。(就好像2+5*3我们总是先算5*3,就是说【乘】的运算优先级大于【加】的运算优先级)
比如说判断2100年是否为闰年我们就发现:
2100能被4整除,同时也能被100整除。这时候【或】前面的条件就不成立了。这时候再判断【或】后面的条件成不成立,即能不能被400整除。我们发现2100不能被400整除,【或】后面的条件也不成立。所以为假,即2100年不是闰年。
再比如说判断2400年是否为闰年我们就发现:
2400能被4整除,同时也能被100整除。这时候【或】前面的条件就不成立了。这时候再判断【或】后面的条件成不成立,即能不能被400整除。我们发现2400能被400整除,【或】后面的条件成立。所以为真,即2400年是闰年。
再比如说判断2004年是否为闰年我们就发现:
2004能被4整除,同时又不能被100整除。这时候【或】前面的条件就成立了。这时候我们直接判断为真,即2004年是闰年。
&&运算和||运算的顺序不一样的,&&优先于||。
你代码没贴全,我猜测你的问题出在了这里。
下面的是两两一组的,注意加括号与不加括号的区别。
0 || 0 && 0 = 0
(0 || 0) && 0 = 0
0 || 0 && 1 = 0
(0 || 0) && 1 = 0
0 || 1 && 0 = 0
(0 || 1) && 0 = 0
0 || 1 && 1 = 1
(0 || 1) && 1 = 1
1 || 0 && 0 = 1
(1 || 0) && 0 = 0
1 || 0 && 1 = 1
(1 || 0) && 1 = 1
1 || 1 && 0 = 1
(1 || 1) && 0 = 0
1 || 1 && 1 = 1
(1 || 1) && 1 = 1
举报