无法理解不常见的语法

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