我在C ++工作。我有两个涉及三元运算符的语句。
std::stack<Node*> s;
int depth = 0;
/*modify depth integer and stack size, based on height of BST*/
depth = s.size() > depth ? s.size() : depth;
std::stack<Node*> s;
int depth = 0;
/*modify depth integer and stack size, based on height of BST*/
s.size() > depth ? depth = s.size() : depth = depth;
我的问题是:是否有一种标准方法可以使用三元运算符分配变量?这些表单中的一个是否比另一个更有效,更简洁,或更好?
第二个例子似乎比第一个例子更多余。
编辑:添加评论,在三元运算符之前修改 s 和深度。
答案 0 :(得分:2)
三元表达式主要用于它产生的值。有可能滥用它并仅使用它的副作用,但这种结构最好留给普通的if
语句。所以第一个例子是对三元表达式的习惯用法(尽管,正如评论所指出的那样,在这个特定情况下可能不合适),而第二个例子则不然。
答案 1 :(得分:0)
第一个例子比第二个例子更多是惯用语。这就是我想要的。
注意:强> 但是,阅读后,我同意这是对运营商的不良使用。一个简单的 if 语句代替三元运算符。