我正在编写一个函数以返回两个日期之间的差。因此,对于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);
}
}
答案 0 :(得分:2)
if (yearDifference < 0) { //skipped
yearDifference * -1;
}
此代码不执行任何操作。将yearDifference
乘以-1
并丢弃结果无效。您可能是说yearDifference *= -1;
等效于yearDifference = yearDifference * -1;
。
答案 1 :(得分:1)
我发现解决方案是一个简单的错误,但我没有意识到它阻止了if语句的评估。 在if语句中,我有
yeardifference * -1;
这是一个错字,它应该在星号后有一个等于等于的数字,以将yearDiffernce乘以-1,以便将其从负数变为正数。对不起,每个人都犯了一个简单的错误,尽管感谢您的帮助:)