Lexikalisches Scoping vs. dynamisches Scoping

Ich habe also dieses Problem, bei dem ich die Ausgabe mithilfe von zwei unterschiedlichen Bereichsregeln ermitteln muss. Ich kenne die Ausgabe mit lexikalischem Scopinga=3 undb=1, aber es fällt mir schwer, die Ausgabe mit dynamischem Scoping herauszufinden.
Hinweis: Das folgende Codebeispiel verwendet die C-Syntax, aber behandeln wir es einfach als Pseudo-Code.

int a,b;

int p() {
    int a, p;
    a = 0; b = 1; p = 2;
    return p;
}

void print() {
    printf("%d\n%d\n",a,b);
}

void q () {
    int b;
    a = 3; b = 4;
    print();
}

main() {
    a = p();
    q();
}

Folgendes habe ich mir ausgedacht. Mit Dynamic Scoping verweisen die nichtlokalen Verweise aufa undb kann wechseln. Also habe icha=2 (Rückkehr von p ()), dannb=4 (innerhalb von q ()). Die Ausgabe ist also2 4?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage