C++ c+中的条件运算符+;

C++ c+中的条件运算符+;,c++,C++,我对以下代码感到困惑,并试图理解它们的含义 if( (root->left == NULL) || (root->right == NULL) ) { Node *temp = root->left ? root->left : root->right; } 它的意思是如果root->left==NULL那么temp=root->leftelse temp=root->right 你说得不太对,但你明白了。这是一个接受三个操作数的条件运算符 相当于

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

 if( (root->left == NULL) || (root->right == NULL) )
 {
    Node *temp = root->left ? root->left : root->right;
 }

它的意思是
如果root->left==NULL
那么
temp=root->left
<代码>else temp=root->right

你说得不太对,但你明白了。这是一个接受三个操作数的条件运算符

相当于

if( condition )
  var = expression1
else
  var = expression2
在你的情况下,这意味着

如果根->左!=空,然后temp=root->left,否则temp=root->right

而不是

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


你说得不太对,但你明白了。这是一个接受三个操作数的条件运算符

相当于

if( condition )
  var = expression1
else
  var = expression2
在你的情况下,这意味着

如果根->左!=空,然后temp=root->left,否则temp=root->right

而不是

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


它的意思是:如果
left
right
NULL
,那么
temp
等于
NULL
,否则如果
left
NULL
,那么
temp
等于
right
,否则如果
right
NULL
,然后
temp
等于
left
它的意思是:如果
left
right
NULL
,那么
temp
等于
NULL
,否则如果
left
NULL
,那么
temp
等于
right
,否则,如果
right
NULL
,则
temp
等于
left

您错了。这意味着如果
root->left==NULL
那么
*temp=root->right

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

否则将不会设置温度
*temp

有4种可能的情况:

  • root->left==NULL
    root->right!=空
    *temp
    将是
    根->右
  • root->left==NULL
    root->right==NULL
    *temp
    将是
    root->right
  • root->left!=空
    根->右!=空
    *温度
    将不会设置
  • root->left!=空
    根->右==NULL
    *temp
    将是
    根->左

  • 现在你可以看到第二和第三种情况可能是潜在的问题。

    你错了。这意味着如果
    root->left==NULL
    那么
    *temp=root->right

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

    否则将不会设置温度
    *temp

    有4种可能的情况:

  • root->left==NULL
    root->right!=空
    *temp
    将是
    根->右
  • root->left==NULL
    root->right==NULL
    *temp
    将是
    root->right
  • root->left!=空
    根->右!=空
    *温度
    将不会设置
  • root->left!=空
    根->右==NULL
    *temp
    将是
    根->左

  • 现在,您可以看到第二和第三种情况可能是潜在的问题。

    问题中以“它意味着…”开头的部分是错误的(条件应为
    !=NULL
    ),因此说“您是对的”是不正确的。此外,运算符的实名是条件运算符,如OP的问题所示(参见5.16条件运算符[expr.cond])@德科德,谢谢你纠正我。我忽略了
    =
    运算符。三元运算符
    ?:
    返回值,而
    if
    语句不返回值。问题中以“it means…”开头的部分是错误的(条件应为
    !=NULL
    ),因此说“you is right”是不正确的。此外,运算符的实名是条件运算符,如OP的问题所示(请参阅5.16条件运算符[expr.cond])@DCoder,谢谢您的更正。我忽略了
    =
    运算符。三元运算符
    ?:
    返回值,而
    if
    语句不返回值。