2016-11-17 77 views
-2
PatientDemographicInformation patientJones("123456789", "Jones", 
               'A', "Mary", 
               "Mc Donalds Department, 555 Elm Street, Apt 2, 
               "666 West Side", 
               "San Diego", "ca", "76032", "3899", 
               "360", "89054392012", 
               'f', 02031934); 

patientJones.printPatientDemographicInformation(); 

int PatientDemographicInformation::getPatientAge() 
{ 
     time_t t = time(0); // get time now 
     struct tm * now = localtime(& t); 
     int yearNow = (now->tm_year + 1900); 
     int birthYear = (patientDateOfBirth % 10000); 
     return yearNow - birthYear; 

} 

的main.cpp:27:50:錯誤:無效的數字「9」,在八進制常量< - 這是錯誤...年齡輸出功率不計算

它不會計算若干年的某些幾個月和幾天。 我用11171993作爲出生日期,它工作。雖然,我需要02031934的出生日期和真正的任何日期工作。歡迎任何幫助。

謝謝!

+0

只有郵政編碼足以重現該問題。 –

+0

對不起,第一次問一個問題。謝謝你讓我知道。 – LuckyDreamer

回答

3

根據this reference,與0(如01011967)一樣,整數常量的開始表示八進制表示法,因此無法在該常量中使用9

+0

謝謝!雖然這只是暫時解決了我的問題,但我需要稍後使用相同的計算來從用戶那裏獲得輸入。無論如何要配置這個採取前導0的任何輸入? – LuckyDreamer

1

你的問題是,你的電話號碼與0文字開始在這裏看到: What is special about numbers starting with zero?

如果你想有相同的號碼,要麼拿出0,留下1011967,或將其更改爲像一個字符串你已經完成了其餘的數字。

+0

是的,它確實可以取出領先的0,但我將在以後的道路上使用輸入程序的相同功能。無論如何,我可以讓01011967成爲可能嗎? – LuckyDreamer

+0

@LuckyDreamer只寫'1011967'而不是'01011967'。哪裏有問題 ?如果你用0開始一個數字,那麼它是一個八進制數。而已。期。 –

+0

@Michael Walz是的,但這只是構造函數的臨時修復。我將需要使用這個相同的函數來獲取用戶的輸入並計算出生日期前導爲0的任何內容。 – LuckyDreamer