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