2013-07-08 23 views
2

我找不到爲什麼我的代碼運行不正常 - 我只是從查找表中分配一堆值,然後運行檢查以確保值全部等於零。由於某種原因,我正在運行的「檢查」保持失敗(並且分配默認值),即使底層數字不合理 - 有人可以向我解釋爲什麼我的「if/or」語句在下面不起作用嗎?我已經驗證了我的全部上面分配的值是在轉讓時有效......或(||)運算符在C++中不能正常工作

PF[i].pMktRefNoi = MD[mProp[i].m_NoiVectorNumber-1].Values[mProp[i].m_StartfColNum-1]; 
     cout << PF[i].pMktRefNoi << endl; 
    PF[i].pMktRefVal = MD[mProp[i].m_ValVectorNumber-1].Values[mProp[i].m_StartvColNum-1]; 
     cout << PF[i].pMktRefVal << endl; 
    PF[i].pMktRefRent = MD[mProp[i].m_RntVectorNumber-1].Values[mProp[i].m_StartfColNum-1]; 
     cout << PF[i].pMktRefRent << endl; 
    PF[i].pMktRefOcc = MD[mProp[i].m_OccVectorNumber-1].Values[mProp[i].m_StartfColNum-1]; 
     cout << PF[i].pMktRefOcc << endl; 

    // Error check the starting values we just assigned 
    if (PF[i].pMktRefNoi <= 0 || PF[i].pMktRefVal <= 0 || PF[i].pMktRefRent <= 0 || PF[i].pMktRefOcc <= 0); { 
    PF[i].Result = "Error - Invalid Starting Vector Value"; 
    PF[i].pMktRefNoi = 100; 
    PF[i].pMktRefVal = 100; 
    PF[i].pMktRefRent = 100; 
    PF[i].pMktRefOcc = 100; 
    } 

所以在上面的代碼中,每個「COUT」的語句來驗證我的輸出,所有的值正確分配並且大於零。但是,在if語句後,所有內容仍然被重新分配到100 - 任何人都可以解釋我的代碼出了什麼問題嗎?

+5

'pMktRefOcc <= 0); {' - 這是錯誤 –

+0

請點擊答案旁邊的綠色複選標記,以免在主頁面上將此問題標記爲未答覆。 – Potatoswatter

回答

13

您的if後有一個額外的分號。

這...

if (...); { 

} 

...需要是這樣的:

if (...) { 

} 

在第一種情況下,連接到if代碼是單空語句,;。然後執行{}內的代碼塊,而不管if的結果如何。

+2

斑點:) –

+0

很好。 – brentf

+0

非常感謝 - 修復了它。只要我被允許,我會'接受'答案。再次感謝。 – brentf

相關問題