无法理解不常见的语法
Cannot understand uncommon syntax
我最近遇到了一个函数,它可以计算任何给定日期的星期几。函数如下图
unsigned int getDayOfWeek(const unsigned int day, const unsigned int month, unsigned int year)
{
static unsigned int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
year -= month < 3;
return ( year + year/4 - year/100 + year/400 + t[month-1] + day) % 7;
}
我无法理解 year -= month < 3
的语法。我假设它扩展到 year = year - (month < 3)
,但我仍然无法理解它的作用。
我的问题是:这个语法一般是做什么的,而不仅仅是在这个函数的上下文中?例如 a -= b < 3
.
提前致谢。
month < 3
是一个布尔表达式。
false
转换为 0
true
转换为 1.
您可以将其重写为:
if (month < 3) { year = year - 1; }
我最近遇到了一个函数,它可以计算任何给定日期的星期几。函数如下图
unsigned int getDayOfWeek(const unsigned int day, const unsigned int month, unsigned int year)
{
static unsigned int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
year -= month < 3;
return ( year + year/4 - year/100 + year/400 + t[month-1] + day) % 7;
}
我无法理解 year -= month < 3
的语法。我假设它扩展到 year = year - (month < 3)
,但我仍然无法理解它的作用。
我的问题是:这个语法一般是做什么的,而不仅仅是在这个函数的上下文中?例如 a -= b < 3
.
提前致谢。
month < 3
是一个布尔表达式。
false
转换为 0true
转换为 1.
您可以将其重写为:
if (month < 3) { year = year - 1; }