考慮場景:如果語句優化爲在第一個條件爲false時不調用遞歸函數?
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