在Visual Studio C ++中跳过else语句?

时间:2014-10-08 17:06:59

标签: c++ xcode visual-studio-2012 if-statement

为什么在VS C ++中的以下方法中跳过了最后一个else语句?我已经正确地重载了​​<运算符,因此没有问题。实际上,当我使用相同的函数并在XCode中重新编译它时,它会执行它所执行的else语句。这是为什么?

void insert(Comparable & x, BinaryNode * & t)
        {
            if (t == nullptr)
                t = new BinaryNode{ x, nullptr, nullptr };
            else if (x < (t->element))
                insert(x, t->left );
            else if ((t->element) < x)
                insert(x, t->right);
            else
                t->element.merge(x.getEnzymes());  
        }

1 个答案:

答案 0 :(得分:0)

看起来像代码优化。 C ++喜欢“过度优化”它,如果它认为其他东西永远不会被击中,那么它甚至不会编译那部分代码。 同时为每个if添加{}。解析器更容易用它们解析那些if语句。 你可以将它分成完全独立的ifs。