c ++三元运算符使用

时间:2016-07-13 05:41:36

标签: c++ conditional ternary

我在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 深度

2 个答案:

答案 0 :(得分:2)

三元表达式主要用于它产生的值。有可能滥用它并仅使用它的副作用,但这种结构最好留给普通的if语句。所以第一个例子是对三元表达式的习惯用法(尽管,正如评论所指出的那样,在这个特定情况下可能不合适),而第二个例子则不然。

答案 1 :(得分:0)

第一个例子比第二个例子更多是惯用语。这就是我想要的。

注意: 但是,阅读后,我同意这是对运营商的不良使用。一个简单的 if 语句代替三元运算符。