如果语句未评估C ++

时间:2018-10-30 21:47:20

标签: c++ visual-studio-2015

我正在编写一个函数以返回两个日期之间的差。因此,对于yearsDifference语句(请参见代码中的断点注释),我要从另一个减去一个,然后使用if语句检查结果是否为负。

if语句没有得到评估,这是什么原因造成的?

我已经在Visual Studio中使用了一个断点来逐行检查它,并且它不会停在if语句上以进行检查。

int UUDate::Between(UUDate date) {
//TODO - Add your implementation here
int daycount = 0;
int tempMonth = date.month_;
int tempDay = date.day_;
int yearDifference;

while (month_ != tempMonth)
{
    if (month_ == 1 || month_ == 3 || month_ == 5 || month_ == 7 || month_ == 8 || month_ == 10 || month_ == 12) {
        daycount += 31;
    }
    else if (month_ != 2) {
        daycount += 30;
    }
    else {
        if (year_ % 4 == 0) {
            daycount += 29;
        }
        else {
            daycount += 28;
        }
    }
    tempMonth++;
    if (tempMonth > 12)
        tempMonth = 1;
}

yearDifference = year_ - date.year_; //breakpoint here
if (yearDifference < 0) { //skipped
    yearDifference * -1;
}
if (day_ - tempDay < 0) {
    return ((day_ - tempDay) * 1) + daycount + (yearDifference * 365);
}
else {
    return (day_ - tempDay) + daycount + (yearDifference * 365);
}

}

2 个答案:

答案 0 :(得分:2)

if (yearDifference < 0) { //skipped
    yearDifference * -1;
}

此代码不执行任何操作。将yearDifference乘以-1并丢弃结果无效。您可能是说yearDifference *= -1;等效于yearDifference = yearDifference * -1;

答案 1 :(得分:1)

我发现解决方案是一个简单的错误,但我没有意识到它阻止了if语句的评估。 在if语句中,我有

yeardifference * -1;

这是一个错字,它应该在星号后有一个等于等于的数字,以将yearDiffernce乘以-1,以便将其从负数变为正数。对不起,每个人都犯了一个简单的错误,尽管感谢您的帮助:)