int m = 5, d = 12, y = 1975, val;
// May 12, 1975
谁能解释一下下面代码行中逗号运算符的功能/用途:
val = (d+=m<3?y--:y-2,23*m/9+d+4+y/4-y/100+y/400)%7;
above line由 Mike Keith 编写,用于计算给定日期(d = 日,m = 月,y = 年)的星期几。其中星期日 = 0,星期一 = 1,星期二 = 2,星期三 = 3,星期四 = 4,星期五 = 5,星期六 = 6。 我知道如果 d+=m<3 为真,则执行 y--,否则执行 y-2。我不明白的是 y-2 后面的逗号的用途。
最佳答案
逗号操作符将要执行的表达式分开,就像;
一样。但是对于 ,
,它们构成了一个完整的表达式,计算结果为最后一个子表达式的值。例如
int i = 1;
int j = (++i, i*2);
printf("%i", j)
打印出 4.
例如,它可以用在 for
表达式中,其中 3 个表达式需要在 header 中。例如
for(i = 0, j = 0; i < n; i++, j++)
关于三元语句中的 C 逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28520421/