【发布时间】:2018-02-23 21:20:10
【问题描述】:
dow(m,d,y) {
y-=m<3;
return(y+y/4-y/100+y/400+"-bed=pen+mad."[m]+d)%7;
}
该函数的目的是找出所提供的日期(1-31)在任何给定的月份和年份中的哪一天(Su-Sa)。
我不确定这个函数是如何工作的,因为它是用 C 编写的。我不知道是什么y-=m<3 的用途,或者 "-bed=pen+mad." 的用途(这只是一个字符串吗?)。
这是我的来源:https://cs.uwaterloo.ca/~alopez-o/math-faq/node73.html
【问题讨论】:
-
使用日期时间模块....不要翻译神秘的c。如果月份是 0,1 或 2,
y-=m<3从y中删除 1 - 第 1 部分或返回看起来像闰年计算 -
这不起作用,因为我将它用于日历。我需要一个函数来告诉我第一天是哪一天,以便生成正确的日历模板。
-
"-bed=pen+mad."是一个字符串文字。它的值是一个地址,可能在任何地方。 -
@WeatherVane 它后面有一个索引运算符,因此它会提取一些字符或其他字符并使用该字符的 ASCII 值作为调整。太他妈聪明了,但不是废话。
-
在 C 中,获取字符串中的索引会返回字符代码。字符串“-bed=pen+mad”的翻译。在字符代码中是数组 [45,98,101,100,61,112,101,110,43,109,97,100,46]。 TBH,我不知道这扮演了什么角色 x-)
标签: c python-3.x function math