Betrachten Sie das Szenario:Ist if-Anweisung optimiert, um rekursive Funktionen nicht aufzurufen, wenn die erste Bedingung falsch ist?
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;
}
Wenn wir einen Zustand wie wenn a->data != b->data
erfüllen, dann wird der rekursiven Aufruf zu (fun(a->left) == fun(b->left))
gemacht werden und (fun(a->right) == fun(b->right))
oder werden sie sagen direkt falsch für den Zustand?
Dies hat nichts mit Optimierung zu tun. Die Bewertungssemantik von if-Anweisungen ist ein grundlegender Teil der Kernsprachregeln. –
Dies ist kein Duplikat und fragt nicht nach einer Kurzschlussauswertung. Es fragt nach rekursiven Vergleichen mehrerer Strukturfelder, wenn diese Felder nicht explizit angegeben sind. – skrrgwasme
Es hat nichts mit 'if' Aussage zu tun, sondern mit der Auswertung logischer Operatoren. Die Antwort wäre in jedem Zusammenhang anwendbar. – AnT