我知道逻辑运算符会进行短路检查。也就是说,如果存在类似 的语句A && B && C
,则 ifA
为假,B
并且C
不被评估。B
但是,C
在函数调用的情况下也是如此吗?
例如,这段代码中的 return 语句:
bool areIdentical(struct node * root1, struct node *root2)
{
/* base cases */
if(root1 == NULL && root2 == NULL)
return true;
if(root1 == NULL || root2 == NULL)
return false;
/* Check if the data of both roots is same and data of left and right
subtrees are also same */
return (root1->data == root2->data && //I am talking about this statement
areIdentical(root1->left, root2->left) &&
areIdentical(root1->right, root2->right) );
}