は、シナリオを検討してください。最初の条件がfalseの場合、if文は再帰関数を呼び出さないように最適化されていますか?
int fun(node* a, node* b){
if(a == NULL && b == NULL) return 0;
if((a->data == b->data) && (fun(a->left) == fun(b->left)) && (fun(a->right) == fun(b->right)) return 1;
return 0;
}
a->data != b->data
場合、我々は次のように条件を満たした場合には、再帰呼び出しが(fun(a->left) == fun(b->left))
と(fun(a->right) == fun(b->right))
に行われるか、直接条件の偽言うのだろうか?
これは最適化とは関係ありません。 if文の評価セマンティクスは、コア言語規則の基本的な部分です。 –
これは重複していないので、短絡の評価は必要ありません。これらのフィールドが明示的に指定されていない場合、複数の構造フィールドの再帰的な比較について質問しています。 – skrrgwasme
'if'文とは関係ありませんが、論理演算子の評価とは関係ありません。答えはどんな文脈でも適用可能である。 – AnT