Wert (Informatik)

Im Informatik, a Wert ist die Darstellung einer Entität, die durch ein Programm manipuliert werden kann. Die Mitglieder von a Typ sind die Werte dieser Art.[1]

Der "Wert einer Variablen" wird durch die entsprechenden angegeben Kartierung in dem Umgebung. In Sprachen mit Zuweisbare VariablenEs wird notwendig, zwischen den zu unterscheiden R-Wert (oder Inhalt) und die L-Wert (oder Ort) einer Variablen.[2]

Im deklarativ (hochrangige) Sprachen, Werte müssen sein Referentiell transparent. Dies bedeutet, dass der resultierende Wert unabhängig vom Ort des Ausdrucks ist, der zur Berechnung des Wertes erforderlich ist. Nur der Inhalt des Standorts (die Bits, unabhängig davon, ob sie 1 oder 0 sind) und ihre Interpretation sind signifikant.

Aufgabe: L-Werte und R-Werte

Einige Sprachen verwenden die Idee von L-Werte und R-WerteAbgeleitet von der typischen Bewertung auf der linken und rechten Seite einer Zuweisungsanweisung. Ein L-Wert bezieht sich auf ein Objekt, das über einen einzigen Ausdruck hinausgeht. Ein R-Wert ist ein vorübergehender Wert, der nicht über den Ausdruck hinausgeht, der ihn verwendet.[3]

Der Begriff von L-Werten und R-Werten wurde von eingeführt von Kombinierte Programmiersprache (CPL). Die Begriffe in einer Expression von R-Wert, L-Wert und R-Wert/L-Wert sind analog zu dem Parameter Modi des Eingabeparameters (hat einen Wert), Ausgangsparameter (kann zugewiesen werden) und Eingabe/Ausgabeparameter (hat einen Wert und kann zugewiesen werden), obwohl die technischen Details zwischen Kontexten und Sprachen unterscheiden.

R-Werte und Adressen

In vielen Sprachen, insbesondere die C Familie, l-Werte haben Speicheradressen das sind programmatisch für das laufende Programm zugänglich (z. B. über eine Adresse des Bedieners wie "&" in C/C ++), was bedeutet, dass es sich um Variablen oder Variablen oder de-referenziert Verweise auf einen bestimmten Speicherort. R-Werte können L-Werte (siehe unten) oder Nicht-L-Werte sein-ein Begriff, der nur zur Unterscheidung von L-Werten verwendet wird. Betrachten Sie den C -Ausdruck 4 + 9. Bei der Ausführung generiert der Computer einen Ganzzahlwert von 13, da das Programm jedoch nicht explizit benannt wurde, wo im Computer diese 13 gespeichert ist, ist der Ausdruck ein nicht l-Wert. Auf der anderen Seite, wenn ein C -Programm eine Variable x deklariert und den Wert von 13 zu x zuweist, dann der Ausdruck x hat einen Wert von 13 und ist ein L-Wert.

In C bedeutete der Begriff l-Wert ursprünglich etwas, das zugewiesen werden konnte (daher der Name, was auf der linken Seite des Zuordnungsoperators liegt), aber seit dem reservierten Wort const (konstant) wurde der Sprache hinzugefügt, der Begriff ist jetzt 'modifizierbarer l-Wert'. Im C ++ 11 Eine besondere semantische Glyphe && existiert (nicht zu verwechseln mit dem && Bediener für logische Operationen verwendet), um die zu bezeichnen Verwendung/Zugriff der Adresse des Ausdrucks für die Compiler nur; d.h. die Adresse kann nicht mit der Adresse der Adresse abgerufen werden & Bediener während der Laufzeit des Programms (siehe Die Verwendung von Bewegungssemantik).

Diese Art von Referenz kann an angewendet werden alle R-Werte, einschließlich Nicht-L-Werte sowie L-Werte. Einige Prozessoren geben eine oder mehrere Anweisungen, die eine annehmen unmittelbarer Wert, manchmal kurz als "unmittelbar" bezeichnet. Ein sofortiger Wert wird als Teil der Anweisung gespeichert, die ihn verwendet, normalerweise zum Laden, in ein Register hinzufügen, sie hinzufügen oder von ihm subtrahieren. Die anderen Teile der Anweisung sind die Opcodeund Ziel. Letzteres kann implizit sein. (Ein nicht geeigneter Wert kann sich in einem Register befinden oder an anderer Stelle im Speicher gespeichert werden, sodass der Anweisungen eine direkte oder indirekte Adresse [z. B. Indexregister-Adresse] zum Wert enthalten.)

Der L-Wert-Ausdruck bezieht sich auf ein Objekt. Ein nicht modifizierbarer L-Wert ist adressierbar, aber nicht zuzuweisen. Mit einem veränderbaren L-Wert kann das bestimmte Objekt sowohl geändert als auch untersucht werden. Ein R-Wert ist ein Ausdruck, ein Nicht-L-Wert ist ein Ausdruck, der kein L-Wert ist. Ein Beispiel ist ein "unmittelbarer Wert" (schauen Sie unten) und folglich nicht adressierbar.

In der Montagesprache

Ein Wert kann praktisch jede Art von Daten von einem gegebenen sein DatentypZum Beispiel eine Zeichenfolge, eine Ziffer, einen einzelnen Buchstaben.

Prozessoren unterstützen häufig mehr als eine Größe sofortiger Daten, z. 8 oder 16 Bit, bei der ein einzigartiges Opcode und eine Mnemonik für jede Anweisungsvariante verwendet werden. Wenn ein Programmierer einen Datenwert liefert, der nicht passt, gibt der Assembler eine "außer Reichweite" -Fehlermeldung aus. Die meisten Abgeordneten ermöglichen einen sofortigen Wert als Ausdruck als ASCII, Dezimal, hexadezimal, Oktal, oder binär Daten. Somit der ASCII -Charakter 'A' ist das gleiche wie 65 oder 0x41. Das Bytebestellung von Strings können je nach Assembler- und Computerarchitektur zwischen den Prozessoren unterschiedlich sein.

Anmerkungen

  1. ^ Mitchell 1996, p. 9.
  2. ^ Mitchell 1996, S. 389–390.
  3. ^ "Lvalues ​​und Rvalues ​​(visuell C ++)". Microsoft Developer Network. Abgerufen 3. September 2016.

Verweise

Externe Links