if和else部分都在执行

时间:2017-11-13 05:19:14

标签: c++

  /*Q_INVOKABLE*/ void LinkDestUI::selectDeselectSingleDestination(int iXmlId)
{
   for(const auto &subNode : m_nodeColl)
   {
      if(bMultipleSelect())
      {
         if(subNode->getXmlId() == iXmlId)
         {
             LOG(Severity_Error)<<"1 ";
            subNode->setbSelected(!subNode->bSelected());
         }
      }
      else
      {
         if(subNode->getXmlId() == iXmlId)
         {
             LOG(Severity_Error)<<"2 ";
            subNode->setbSelected(!subNode->bSelected());
         }
         else
         {
             LOG(Severity_Error)<<"3 ";
            subNode->setbSelected(false);
         }
      }
   }
}

当我执行我的代码时,编译器转到else部分,并且在else部分内的if和else语句中除外。为什么呢?

1 个答案:

答案 0 :(得分:1)

看起来......(暂时增加我的机智属性以避免冒犯)......相当不可能: - )

这可能是因为代码被多次输入而你只是因为输出而假设它正在执行这两个部分。

我的建议是将外部else中的代码更改为:

LOG(Severity_Error)<<"Starting inner if ";
if(subNode->getXmlId() == iXmlId)
{
    LOG(Severity_Error)<<"2 ";
    subNode->setbSelected(!subNode->bSelected());
}
else
{
    LOG(Severity_Error)<<"3 ";
    subNode->setbSelected(false);
}
LOG(Severity_Error)<<"Ending inner if ";

你应该看到两个块在没有插入结束/开始消息集的情况下执行。