Was für einen Sinn haben Konsunaten

apfel2kuchen

Grünschnabel
Hi,

ich frage mich was für einen genaueren sinn Konsunaten haben und was ist der Unterschied zu einer Variable? So wie ich das verstanden habe das der Wert immer gleich bleibt oder? Diese werden ja vor der main anweisung definiert.

#define a 20
main() {
.
.
.
}
 
Moin,

ich nehme mal an, dass Du "Konstanten" meinst (nicht "Konsonanten"), oder ??

Richtig, der Wert bleibt unverändert!
Das macht (auch) gerade dann Sinn, wenn dieser Wert mehrfach verwendet wird.
Du mustt dann ggf. nur eine Stelle im Code ändern, wenn sich der Wert mal ändern soll!
Zudem werden damit sog. "Magic Numbers" im Code vermieden (wobei 'a' ein genau dämlicher Bezeichner wäre) !!

Bspw. ist eine Konstante "laenge = 20" ggf. deutlich aussagekräftiger (Stichwort "sprechende Bezeicher") !

Gruß
Klaus
 
Danke für die schnelle antwort! Ja, war ein kleiner Rechtschreibfehler.
Was sind Magic Numbers - wieder eine Variable die sich nie ändert?
 
Mit "Magic numbers" sind Zahlen (im weiteren Sinn auch Buchstaben etc.) gemeint,
bei denen man den Sinn nicht erkennt (und damit auch nicht, warum das Programm etc.
genau mit dieser Zahl funktioniert. Grund also "Magie" :p)

Um ein Beispiel zu geben (in mehreren Stufen von den undurchschaubaren Magic numbers bis zum Idealzustand):
C++:
if(i == 118)
{
    ...
}
Hintergrundwissen zum (nicht existierenden) Programm: Es geht um Berechnungen in Biologie/Physik/Chemie.
Warum 118? Versteht man so eben nicht gleich,

C++:
if(i == 118) //Anzahl der chemischen Elemente
{
    ...
}
Schon klarer

C++:
#define CHEM_ELEM_COUNT 118
...
if(i == CHEM_ELEM_COUNT)
{
    ...
}

Und, um das Ganze noch dem Compiler statt Präproz. zu überlassen (verschiedene Vorteile, geht hier zu weit):
C++:
const int CHEM_ELEM_COUNT = 118;
...
if(i == CHEM_ELEM_COUNT)
{
    ...
}
 
Also, die Konstante soll den Programmcode für dritte verständlicher machen und dadurch sollen fehler vermieden werden, wie z,B. durch eine einzelne Zahl, denn wenn diese falsch ist wird das Programm nicht richtig ausgeführt.

//Edit:
Danke die Erklärung war super! :)
 
Moin,

Also, die Konstante soll den Programmcode für dritte verständlicher machen
Ja, zum einen das !

dadurch sollen fehler vermieden werden, wie z,B. durch eine einzelne Zahl, denn wenn diese falsch ist wird das Programm nicht richtig ausgeführt.
Jein, das ist IMHO eher ein Nebeneffekt! Aber weniger ein Grund, warum Konstanten erfunden wurden!
Es muss ja auch nicht zwingend eine Zahl sein, sondern kann auch eine Zeichenkette mit bspw. einem Dateinamen oder einem Pfad etc. sein

Mit der Konstanten soll halt ein Term in der Umgebung, in der er gültig ist, bekannt und verwendbar sein. Wenn sich der Wert der Konstanten mal ändert (bspw. der genannte Dateiname), dann muss nur eine Stelle geändert werden und nicht möglicherweise Dutzende !

Gruß
Klaus
 

Neue Beiträge

Zurück