Welchen Typ wählt der Compiler für Konstanten?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Marsmännchen
Beiträge: 294
Registriert: So 4. Mai 2014, 21:32
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
CPU-Target: 64bit
Wohnort: Oranienburg

Welchen Typ wählt der Compiler für Konstanten?

Beitrag von Marsmännchen »

Ich hoffe, die Frage ist nicht zu blöd, aber ich habe nichts dazu gefunden. Sie kam mir, als ich mich mit typisierten Konstanten beschäftigt habe.

Bei gewöhnlichen Konstanten entscheidet ja nicht der User, welchen Typ die Konstante bekommt. Er gibt den Identifizierer und den Wert an und Schluss. Den Rest macht der Compiler. Als Grund für typisierte Konstanten verweist die Referenz darauf, dass dies für komplexe Strukturen wie Records und Funktionen etc. benötigt wird. Ich frage mich, ob man manchmal nicht auch für gewöhnliche Typen auf typisierte Konstanten zurückgreifen könnte.

Wenn ich zum Beispiel folgende Konstante definiere:

Code: Alles auswählen

const
  meineKonstante = 1.0

Wählt der Compiler dann Real, Single, Double... gar Currency? Sollte man das nicht wissen, damit es nicht zu Problemen bei Berechnungen und Zuweisungen kommt? Oder wählt der Compiler einen Typ, in den er alle anderen Fließkommatypen gegebenenfalls implizit umwandeln kann? Ansonsten würde ich typisierte Konstanten auch dafür für nützlich halten, wenn es notwendig sein sollte, den Compiler für eine Konstante auf einen ganz bestimmten Typ zu zwingen.

Oder bin ich völlig im falschen Zug, denn die Referenz weist ja auch darauf hin, dass typisierte Konstanten ja auch zur Laufzeit mit einem Wert belegt werden können, also eigentlich variabel sind. Sind die typisierten Konstanten also gar nicht für Basistypen und Reals gedacht?

EDIT: So jetzt bin ich zu Hause und habe mal in ein altes Delphi-Buch geschaut, dass ich mir geholt habe. Was typisierte Konstanten sind habe ich daraus entnehmen können, es sind eigentlich Variablen, denen man einen Anfangswert zuweisen will (so jedenfalls das Buch). Welche Typen der Compiler für Konstanten wählt, weiß ich zwar immer noch nicht, aber das ist wohl auch eine ziemlich spezielle Frage...
Ich mag Pascal...

Antworten