c++ 三元运算符使用

c++ ternary operator use

我正在使用 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;

我的问题是:是否有一种标准的方法可以使用三元运算符来分配变量?这些形式中的一种比另一种更有效、更简洁,还是更好

第二个例子似乎比第一个多了一些。

编辑:添加注释 sdepth 在三元运算符之前被修改。

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

第一个示例比第二个示例更地道。这就是我要找的。

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