C++ 或(| |)运算符在C+中工作不正常+;

C++ 或(| |)运算符在C+中工作不正常+;,c++,if-statement,C++,If Statement,我不明白为什么我的代码没有正确运行——我只是从查找表中分配了一组值,然后运行检查以确保这些值都等于零。出于某种原因,我正在运行的“检查”不断失败(并分配默认值),即使基本的数字不能证明这一点——有人能解释一下为什么我下面的“如果/或”语句不起作用吗?我已经验证了我在上面分配的所有值在分配时都是有效的 PF[i].pMktRefNoi = MD[mProp[i].m_NoiVectorNumber-1].Values[mProp[i].m_StartfColNum-1];

我不明白为什么我的代码没有正确运行——我只是从查找表中分配了一组值,然后运行检查以确保这些值都等于零。出于某种原因,我正在运行的“检查”不断失败(并分配默认值),即使基本的数字不能证明这一点——有人能解释一下为什么我下面的“如果/或”语句不起作用吗?我已经验证了我在上面分配的所有值在分配时都是有效的

    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;
    }
PF[i].pMktRefNoi=MD[mProp[i].m_NoiVectorNumber-1].Values[mProp[i].m_StartfColNum-1];

不能在
if
后面加一个分号

这个

if (...); {

}
。。。需要这样做:

if (...) {

}

在第一种情况下,如果
是单个空语句,
,则附加到
的代码。然后执行
{}
中的代码块,无论
的结果如何,如果

pMktRefOcc请单击答案旁边的绿色复选标记,这样这个问题就不会在主页上被标记为未回答。非常感谢-修复了它。一旦我被允许,我将“接受”答案。再次感谢。@brentf一个配置良好的编译器会给出警告。提高您的警告级别(不要使用所有大写)…这也是编写简短if语句的一个理由。如果将该签出拉入一个命名函数,类似于
bool pMktValuesAreValid()const
的内容将更容易看到散乱的分号。我曾经在
If
子句和下面的分号之间有一大堆空格(因此分号远离屏幕)。这是有史以来对我心智最邪恶的把戏之一。