Was ist der Unterschied zwischen Ausführung und Auswertung?

Lesezeit: 5 Minuten

Benutzer-Avatar
Jin

Wir sagen, dass Ausdrücke Werte “auswerten” und Anweisung den Computer anweist, “auszuführen”. Aber für mich scheint es wie die gleiche Terminologie. Was ist der Unterschied zwischen Ausführung und Auswertung in C?

  • Es ist mehr oder weniger dasselbe, stören Sie sich nicht mit diesen Feinheiten der englischen Sprache.

    – Jabberwocky

    28. Juli 2016 um 12:33 Uhr


Es ist wirklich nah genug, um in fast allen Fällen keine Rolle zu spielen.

Um ganz genau zu sein, würde ich sagen, dass die Auswertung einen Ergebniswert erzeugt und den Zustand nicht ändert, während die Ausführung den Zustand ändert und der Ergebniswert entweder nicht erzeugt wird oder zufällig ist und ignoriert wird.

Im Allgemeinen werten wir Ausdrücke aus, wir führen Anweisungen aus.

Also zum Beispiel, wenn wir eine haben if Anweisung in C, werten wir zuerst die Bedingung aus, dann führen wir den Körper aus (oder nicht).

Die Verwirrung wird verstärkt, weil wir in C Ausdrücke haben, die den Status ändern (Zuweisungsoperatoren, Inkrement-/Dekrementoperatoren) und die Anweisungen nichts anderes als Ausdrücke sind.

Also, wenn Sie sehen

a = b+c;

in C ist es eine Anweisung, die ausgeführt wird, aber die Ausführung besteht aus der Auswertung des Ausdrucks a=b+cwobei das Ergebnis (nicht konstanter Verweis auf a) wird verworfen und die Nebenwirkung (a ändert seinen Wert) ist wichtig.

  • Wann beginnt die Auswertung? Vor oder nach oder gleichzeitig mit der Hinrichtung?

    – Hacken

    28. Juli 2016 um 12:41 Uhr

  • Evaluation ist Teil der Ausführung – manchmal der einzige Teil.

    Benutzer3458

    13. Februar 2019 um 15:53 ​​Uhr

Benutzer-Avatar
Fabio sagt, Monica wieder einzusetzen

Es ist nur eine Frage der Linguistik. Ausdrücke werden ausgewertet, Anweisungen werden ausgeführt. In beiden Fällen können wir sagen, dass “etwas getan wird”, und ich würde mir über den Unterschied keine allzu großen Sorgen machen.

Zur Verdeutlichung: Grob gesagt ist eine Anweisung eine Codezeile, und ein Ausdruck ist das, was Sie zwischen Klammern in an finden if() oder while()oder auf der rechten Seite eines Gleichheitszeichens.

Zum Beispiel, int x = 2 + 3; ist eine Anweisung, die eine Variable deklariert x und weist ihm das Ergebnis des Ausdrucks zu 2 + 3das ist, 5.

  • Wie viele Ausdrücke sind in x = y + z; ? Der zweite Absatz ist irreführend.

    – Hacken

    28. Juli 2016 um 12:52 Uhr


  • Aber int x = 2 + 3 ist ein Ausdruck.

    – Bauss

    28. Juli 2016 um 13:54 Uhr

  • @hackks: Ich glaube, im dritten Absatz habe ich erklärt, was ich meinte. Ich versuche nicht, 100% genau zu sein, sondern die Dinge auf einfache Weise zu erklären. In Ihrem Beispiel technisch beides y und z sind Ausdrücke, aber ich würde sagen, es wäre sinnvoller, sie so zu nennen, wenn sie Funktionen wären, wie x = y() + z();. Wenn es sich um Zahlen handelt, scheint es mir übertrieben, sie als Ausdrücke zu bezeichnen. Und in diesem speziellen Kontext würde ich nicht sagen, dass die ganze Zeile ein Ausdruck ist, weil sie nur verwirrt. Ich versuche, den Unterschied zwischen Ausdrücken und Anweisungen zu zeigen. Zu sagen, dass etwas beides ist, hilft nicht.

    – Fabio sagt, Monica wieder einzusetzen

    28. Juli 2016 um 14:07 Uhr

  • @Bauss Ich denke, mein vorheriger Kommentar ist auch für dich. Übrigens habe ich den Satz umformuliert, um klarzustellen, dass „ungefähr“ nicht nur für den ersten Satz gilt, sondern für beide. Das heißt, die Definition von Ausdruck, die ich gebe, ist auch grob. Auch hier versuche ich, die Dinge einfach zu machen, nicht genau. Trotzdem wäre es schön, etwas vom OP zu hören …

    – Fabio sagt, Monica wieder einzusetzen

    28. Juli 2016 um 14:12 Uhr

  • @FabioTurati; Ein Ausdruck mit Semikolon am Ende ist eine Anweisung. Ich würde sie nicht als Anweisung bezeichnen, bis ich einen Assemblercode schreibe/lese.

    – Hacken

    28. Juli 2016 um 15:46 Uhr

Benutzer-Avatar
hackt

Wenn eine Anweisung ausgeführt wird, kommt es zur Aktion der Auswertung ihrer Ausdrücke. Zuerst erfolgt die Ausführung und dann die Auswertung.

Im Ausschnitt

int i = 5, j;
j = 10 + 5*i;

wenn die Aussage j = 10 + 5*i; wird dann die Auswertung von Ausdrücken ausgeführt j, 10, 5*i, 10 + 5*i und j = 10 + 5*i stattfinden. Beachten Sie, dass die ersten drei in beliebiger Reihenfolge ausgewertet werden können.

  • “Zuerst erfolgt die Ausführung und dann die Auswertung.” Beziehen Sie sich auf die Zeit, in der diese Prozesse beginnen? Oder Ende? Überschneiden sie sich zeitlich? Oder schließen sie sich gegenseitig aus?

    – CinCout

    28. Juli 2016 um 12:45 Uhr


  • @CinCout; Zur Verdeutlichung ein Beispiel hinzugefügt.

    – Hacken

    28. Juli 2016 um 12:49 Uhr

  • @Hacks Danke für die Antwort! Was passiert bei der Ausführung im Compiler?

    – Jin

    28. Juli 2016 um 13:28 Uhr


Benutzer-Avatar
rtmh

Ich habe es mir so vorgestellt: Der Begriff ‘Ausdruck’ ist aus der mathematischen Terminologie übernommen. Auswertung ist definiert als:

auswerten

Auswerten bedeutet, den Wert eines numerischen oder algebraischen Ausdrucks zu finden.

Ausdrücke haben die folgende Definition: (Fettdruck zur Hervorhebung hinzugefügt)

Ein Ausdruck in einer Programmiersprache ist a Kombination aus einem oder mehreren expliziten Werten, Konstanten, Variablen, Operatoren und Funktionen, die die Programmiersprache interpretiert (gemäß ihren besonderen Vorrang- und Assoziationsregeln) und berechnet, um einen anderen Wert zu erzeugen (“zurückzugeben”, in einer zustandsbehafteten Umgebung).

Beim Programmieren besteht praktisch jede Anweisung (oder jede Anweisung, die es wert ist, geschrieben zu werden) aus vielen Ausdrücken. Ich habe immer verwendet Auswertung beziehen sich auf die Berechnung dieser Ausdrücke und Hinrichtung bezieht sich auf die Berechnung der gesamten Anweisung. Dies fällt häufig auch mit Unterscheidungen in Bezug auf den Rückgabewert und die Nebenwirkungen zusammen. Vollständige Anweisungen haben normalerweise Nebeneffekte und Ausdrücke geben normalerweise einen Wert zurück.

1046570cookie-checkWas ist der Unterschied zwischen Ausführung und Auswertung?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy