我在大学学习c++,有一段代码我一无所知。我使用+1900,但我的教授在注释行中使用-1900

Fecha& Fecha::operator +=(int days) {
tm f = {};
f.tm_mday = day_ + days;
f.tm_mon = mon_ - 1;
f.tm_year = year_ - 1900; //there is my dude, why out -1900 and not +1900
                         //instead like below
mktime(&f);
day_ = f.tm_mday;
mon_ = f.tm_mon + 1;
year_ = f.tm_year + 1900;
return *this;
}

最佳答案

struct tm中,tm_year是自1900年以来的年份。因此,要从公历年份转换为正确的tm_year值,请减去1900。要从tm_year转换为公历年份,请添加1900。

这两个操作必须彼此相反-一个加法和一个减法-否则,如果多次前后转换,最终将导致越来越多地更改该值。

10-07 13:23