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
语句不返回值。