c - Tomohiko Sakamoto 算法的模糊 C 语法

标签 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;}

我在 ideone.com 上试过了,它确实有效。我对算法的工作原理不感兴趣,令我困惑的是语法。

我认为自己是一名中级 C 程序员,我完全不知道代码的 "-bed=pen+mad."[m] 部分发生了什么。

那是什么???

最佳答案

那是 array subscriptionstring literal 上.请记住,字符串文字实际上只是指向静态内存的指针。

操作等同于:

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

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

关于c - Tomohiko Sakamoto 算法的模糊 C 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66229476/

相关文章:

javascript - 如何在 React 中将地理位置经纬度从一个函数传递到另一个函数的 `ll` 属性?

vb.net - VB.NET中标识符周围的方括号表示什么?

C#:将初始 DayOfWeek 设置为星期一而不是星期日

mysql - 返回一周中每一天的数据(每行 7 条记录)- MySQL

c - 为什么 Windows CreateFile(<no share access>) 对我撒谎?

c++ - mmap如何分配超过20Gb?

java - java文件的语法检查

java - Calendar#getFirstDayOfWeek() 返回错误值

c - 如何从 C 中的父进程分离 fork 进程

objective-c - iPad 应用程序中的 memset 错误