Node 是一个非常简单的类,只有一个构造函数和几个变量:一个“名称”(实际上只是一个字符)和两个名为“left”和“right”的子节点指针。
我刚开始写一些需要放到最左边的节点的代码,当我想到这个时我很高兴:
Node *current = this->root;
while (true) (current->left != nullptr) ? current = current->left : break;
看起来很简单:在无限循环中,检查 current 是否有左 child ,如果有,则将 current 设置为左 child ,如果没有,则跳出循环。这是一个很酷的小单行,不太难读。 (我评论了它!)
嗯,我的编译器不喜欢它:
iterator.cpp:20:70: error: expected expression
while (true) (current->left != nullptr) ? current = current->left : break;
^
1 error generated.
此外,只是将一些大括号放入 while 循环并将三元运算符移至它自己的行并没有帮助(不足为奇)。我必须将它变成 if/else 才能让编译器接受它。
谁能解释一下它是如何解释单行线的以及它反对的原因?
最佳答案
三元条件运算符是将多个表达式组合成一个更大的表达式的运算符。 break
是一个语句而不是一个表达式,所以它不能在三元条件表达式中使用。
不过,您可以像这样重写代码:
while (current->left != nullptr) current = current->left;
希望这对您有所帮助!
关于c++ - 为什么我不能在 C++ 的三元条件语句中使用 "break"语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28642693/