mfl*_*ris 3 c syntax dayofweek
我偶然发现了这个版本的 Sakamoto 算法
dow(m,d,y){y-=m<3;return(y+y/4-y/100+y/400+"-bed=pen+mad."[m]+d)%7;}
Run Code Online (Sandbox Code Playgroud)
我在 ideone.com 上尝试过,它确实有效。我对算法的工作原理不感兴趣,让我困惑的是语法。
我认为自己是一名中级 C 程序员,我完全不知道"-bed=pen+mad."[m]
代码部分发生了什么。
那是什么???
这是对字符串文字的数组订阅。请记住,字符串文字实际上只是一个指向静态内存的指针。
该操作相当于:
int m = 0;
char *str = "-bed=pen+mad.";
str[m];
Run Code Online (Sandbox Code Playgroud)
char
是标量类型,因此您可以使用该值进行算术运算。