OR(||)运算符在C++中无法正常工作

bre*_*ntf 2 c++ if-statement

我无法弄清楚为什么我的代码没有正确运行 - 我只是从查找表中分配一堆值,然后运行检查以确保值都等于零.由于某种原因,我正在运行的"检查"一直在失败(并分配默认值),即使基础数字不合理 - 有人可以向我解释为什么我的"if /或"语句不能在下面工作吗?我已经确认我在上面指定的所有值在转让时都有效...

    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;
    }
Run Code Online (Sandbox Code Playgroud)

因此,在上面的代码中,每个"cout"语句在输出中验证所有值都已正确分配并且大于零.但是,在if语句之后,一切仍然被重新分配到100 - 任何人都可以解释我的代码有什么问题吗?

mea*_*gar 13

你的后面有一个额外的分号if.

这个...

if (...); {

}
Run Code Online (Sandbox Code Playgroud)

......需要这样:

if (...) {

}
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,附加到的代码if是单个空语句,;.然后{}执行其中的代码块,而不管结果如何if.

  • 好眼力 :) (2认同)
  • @brentf配置良好的编译器会发出警告.提高警告级别(不要使用全部大写)...... (2认同)