Informatik W01
Levin Ceglie
L- und R-Werte
Faustregel (Namensgebung): L-Werte können Links von einer Zuweisung stehen und R-Werte Rechts. Diese Begriffe sind sehr vage und die obige Faustregel kann nicht immer angewandt werden. Betrachte dafür folgendes Beispiel
int main(){
const int x = 2;
x = 1; // error
return 0;
}Dieser Code würde nicht kompilieren, da wir versuchen einer konstanten Variable x einen neuen Wert zuzuweisen, obwohl hier x ein L-Wert ist. Im obigen Code wären die Literale 2 und 1 R-Werte.
Hauptmerkmale
L-Wert:
- Ausdruck mit Adresse
- Wert ist der Inhalt an der Speicheradresse entsprechend dem Typ des Ausdrucks.
- L-Wert kann seinen Wert ändern (z.B. per Zuweisung).
R-Wert:
- Ausdruck der kein L-Wert ist
- Jeder L-Wert kann als R-Wert benutzt werden (aber nicht umgekehrt).
- Ein R-Wert kann seinen Wert nicht ändern.
Für weitere Beispiele siehe cppreference.
const-Korrektheit
Dies ist ein wichtiges und auch nützliches Konzept in der Programmierung. Das Prinzip kann in einem Satz zusammengefasst werden:
Jede Variable, welche nicht verändert werden muss, ist als
constdeklariert.
Das einhalten dieser Regel hat viele Vorteile wie:
- Sicherheit und Fehlervermeidung: Wenn man Anfangs weiss, dass eine Variable nicht verändert wird bzw. werden soll (z.B.
int speed_of_light = 299792458) kann man durch markierung mitconstdiese Variable im restlichen Verlaufe des Programmes vor änderung “schützen” und würde einen Fehlermeldung erhalten, falls man trotzdem versucht sie zu verändern. - Optimierungspotential: Der Compiler kann unter Umständen bestimmte Optimierungen vornehmen, wenn er weiß, dass bestimmte Variablen konstant sind. Dies kann zu effizienterem Code führen.
- Dokumentation und Lesbarkeit: Das Hervorheben von Konstanten im Code macht deutlich, welche Werte als fest angesehen werden und nicht geändert werden sollten. Dies verbessert die Lesbarkeit und Verständlichkeit des Codes für dritte (und für das zukünftige ich, welches wieder vergessen hat wie das Programm funktioniert :) ).