프로젝트 오일러를 거치면서 간단한 문제로 작업했습니다. 어떤 이유로 참조를 통해 struct Date를 전달할 때 참조 또는 할당하려고 할 때 가비지 값이됩니다. 어떤 아이디어?참조로 전달 된 구조체가 가비지 값이됩니다.
#include <iostream>
using namespace std;
bool isLeapYear(int year)
{
// century
if ((year % 100 == 0) && (year % 400 == 0))
return true;
// not a century
else if ((year % 100 != 0) && (year % 4 == 0))
return true;
return false;
}
enum Months {JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC};
struct Date
{
int year;
Months month;
int day;
};
int calculateNumberOfDays(const Date& begin, const Date& end)
{
int numberOfDays = 0;
//PROBLEM: This loop never runs... Upon running it through the debugger
// the value of year is garbage i.e. -859382918
// This results in the loop not being entered and the value
// (numberOfDays) being returned as 0
for (int year = begin.year; year < end.year; year++)
{
if (isLeapYear(year))
numberOfDays += 366;
else
numberOfDays += 365;
}
//TODO: Finish for final year
return numberOfDays;
}
int main()
{
int numberOfDays = 0;
int year = 1900;
Months month = JAN;
int day = 1;
Date begin = { 1990, JAN, 1 };
Date end = { 1901, DEC, 31 };
cout << calculateNumberOfDays(begin, end) << endl;
return 0;
}
아니요, 필요에 따라 1이 포함되어 있습니다. –
VS2015를 사용하고 있습니까? 그것은 나를 위해 쓰레기 값의 결과입니다. – keelerjr12
전체 코드를 게시 할 수 있습니까? 예를 들어'isLeapYear' 함수가 없습니다. 문제가 다른 곳에서 일어난 것 같습니다. –