编程论坛
注册
登录
编程论坛
→
C语言论坛
判断闰年代码
持剑的战士
发布于 2019-12-09 14:19, 2756 次点击
这行代码应该怎么解释?我知道它是判断是否为闰年,但我不懂它如何运行的?
leapyear=year%4==0&&year%100!=0||year%400==0;
6 回复
#2
纯蓝之刃
2019-12-09 16:15
leapyear=(((year%4==0)&&(year%100!=0))||(year%400==0));
如果年份是4的整数倍且不是四百的整数倍 或者 年份是400的整数倍 则leapyear的值为1,否则为0.
#3
bcbbcclbbc
2019-12-09 16:48
year%4==0 && year%100!=0 || year%400==0 结果:1闰年,0平年
0 不计算 不计算 0 (不是闰年)
1 0 0 0 (year是4的倍数,是100的倍数但不是400的倍数)
1 0 1 1 (year是4的倍数,是100的倍数也是400的倍数)
1 1 0 1 (year是4的倍数,不是100的倍数)
[此贴子已经被作者于2019-12-9 16:56编辑过]
#4
Jason_
2019-12-09 18:50
翻译到人话就是:
闰年是 年份能被4整除而且年份不是100的倍数 或者 年份能被400整除(成立leapyear为1,否则leapyear为0)
[此贴子已经被作者于2019-12-9 18:53编辑过]
#5
自学的数学
2019-12-09 21:40
由于“=”赋值运算符优先级低且由右向左。
所以先看右边,也就是右边的式子的值赋值与leap。
右边有3个式子。式子的值为真则1,假则0。
式子1:如果year被4整除则真,式子2:year不被100整除则真,式子3:year被400整除则真。
三者关系:(式子1&&式子2)||式子3 式子关系顺序自左向右。
所以,被4整除而不被100整除,或者被400整除。
这是判断闰年的真假(真则1,假则0)。
#6
宁缺T
2019-12-11 10:49
//当year为闰年时返回true(1),否则返回false(0)
bool isLeap(int year){
return (year%4==0&&year%100!=0)||(year%400==0);
}
leapyear=isLeap(y1);
------------------------
因为这是C99新加入的关键字,要加入#include<stdbool.h>这个头文件,更详细的内容你可以自己找找。
#7
持剑的战士
2019-12-11 16:02
回复 6楼 宁缺T
谢谢大佬
1