c ++中的条件运算符

use*_*592 1 c++

我对以下代码感到困惑,并尝试理解它们的含义.

 if( (root->left == NULL) || (root->right == NULL) )
 {
    Node *temp = root->left ? root->left : root->right;
 }
Run Code Online (Sandbox Code Playgroud)

这意味着if root->left ==NULL然后temp = root->leftelse temp = root->right

Rak*_*kib 5

你不完全正确,但你明白了.这是一个带有三个操作数条件运算符.

 var = condition ? expression1 : expression2
Run Code Online (Sandbox Code Playgroud)

相当于

if( condition )
  var = expression1
else
  var = expression2
Run Code Online (Sandbox Code Playgroud)

在你的情况下,它意味着

如果root-> left!= NULL则temp = root-> left,否则temp = root-> right

代替

如果root-> left == NULL则temp = root-> left,否则temp = root-> right