我偶然发现了这个版本的 Sakamoto 算法
dow(m,d,y){y-=m<3;return(y+y/4-y/100+y/400+"-bed=pen+mad."[m]+d)%7;}
我在 ideone.com 上试过了,它确实有效。我对算法的工作原理不感兴趣,令我困惑的是语法。
我认为自己是一名中级 C 程序员,我完全不知道代码的 "-bed=pen+mad."[m]
部分发生了什么。
那是什么???
最佳答案
那是 array subscription在 string literal 上.请记住,字符串文字实际上只是指向静态内存的指针。
操作等同于:
int m = 0;
char *str = "-bed=pen+mad.";
str[m];
char
是标量类型,因此您可以对值进行算术运算。
关于c - Tomohiko Sakamoto 算法的模糊 C 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66229476/