TomohikoSakamoto算法的晦涩C语法

我偶然发现了这个版本的 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]代码部分发生了什么。

那是什么???

回答

这是对字符串文字的数组订阅。请记住,字符串文字实际上只是一个指向静态内存的指针。

该操作相当于:

int m = 0;
char *str = "-bed=pen+mad.";
str[m];

char 是标量类型,因此您可以使用该值进行算术运算。


以上是TomohikoSakamoto算法的晦涩C语法的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>