Benutzer mit den meisten Antworten
Literale/Symbolische konstanten

Frage
-
Hallo zusammen !
Bin vor kurzem von VB auf C++ umgestiegen, und lerne gerade die Grundlagen.Nun bin auf ein kleines problemchen gestoßen, in mein kopf geht nicht rein was eine Literale Konstante, und was ein Symbolische konstante ist.
Habe mehrere tuts und Themen in MSDN gelesen, auch habe mehr mals in meinem Buch das Thema konstanten durch gelesen nun irgend-wie begreife ich noch immer nicht.
Kann mir jemand bitte mit eigene Wörter erklären, wenn es geht mit einem kurzen beispiel ?
PS: So wie ich aus dem Buch verstanden habe:
int MeineVariable = 100; <<<< literale konstante
const int MeineVariable = 100; <<<< literale konstante
#devine MeineVariable 100; <<< symbolische konstante
also wenn ein konstante ohne datentyp definiert z.b wie bei "devine" oder "include" ist eine Symbolische konstante.
Danke für die antworten !
Antworten
-
Hallo API Checker!
Vielleicht macht es Dir das klar
const int // das ist der Typ iMaxValue // das ist die symbolische Konstante = // Zuweisung 100 // literale Konstante ; // Abschluß des Statements
Literale Konstanten sind im Prinzip alle Werte, die Du sofort erkennen kannst. ("ABC", 'a', 3.14, 567 etc.)
Symbolische Konstanten haben einen Wert, aber der ist irgendwo mit einer literalen Konstante, oder einem konstanten Ausdruck, oder einem Wert einer Funktion definiert.
PS: Ich bin kein C++ Begriffs-Guru undhabe den "Standard" nicht gefressen. Ich kann nur etwas C++ ;)
PPS: Verzichte auf die persönliche Ansprache und schreibe allgemein, was Du nicht verstehst.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin RichterModerator Donnerstag, 13. Mai 2010 07:44
- Als Antwort markiert API Checker Sonntag, 16. Mai 2010 20:43
-
Danke !
Jetzt habe ich verstanden !
- Als Antwort markiert API Checker Sonntag, 16. Mai 2010 20:45
Alle Antworten
-
Hallo API Checker!> int MeineVariable = 100; <<<< literale konstante>> const int MeineVariable = 100; <<<< literale konstante>> #devine MeineVariable 100; <<< symbolische konstante>> also wenn ein konstante ohne datentyp definiert z.b wie bei "devine"> oder "include" ist eine Symbolische konstante.>Ich würde bei einem Makro oder #define nicht von einer Konstante reden.Ein Define (Makro) wird eben durch den Präprozessor einfach im Code ersetzt.Man kan jeden Blödsinn und auch schöne Sachen definieren. Deshalb istein #define nichts anderes als eine Änderung des Codes bevor erkompiliert wird.Beispiel:#define CONST 1; // Beachte das Semikolonstatic i = CONST // geht natürlichvoid Foo(){if (i==1) // Compilerfehler.....}Konstanten sind also entweder const Variablen (const int i=6;), odereben literale Konstanten durch die Art des Wertes (100, 100.12, 'a',"ABCD" etc.). Ein #define (Makro() muss eben keine literale Konstantedefinieren sondern kann eben auch eine Funktion.#define MINIMUM(a,b) ((a)<(b) ? (a) : (b)) // BTW: Kein guter WegPS: Und ja ich weiß, dass man solche einen #define nicht benutztensollte wegen seiner Seiteneffekte!
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin RichterModerator Donnerstag, 13. Mai 2010 07:44
-
Hallo Martin Richter !
Danke für hilfreiche erklärung, nun verstehe noch immer nicht was eine literale und was eine symbolische konstante, wie kann ich den unterschied erkennen ?
Das wegen "devine" habe ich verstanden !
PS:
Sorry für idioten fragen, wenn ich was lerne, bei manchen dingen dauerds bis ich endlich verstanden habe.
Martin Richter wenn ich dich bitten darf, kannst du mir das noch ein mal ausführlicher erklären.
Danke für die Antwort !
-
Hallo API Checker!
Vielleicht macht es Dir das klar
const int // das ist der Typ iMaxValue // das ist die symbolische Konstante = // Zuweisung 100 // literale Konstante ; // Abschluß des Statements
Literale Konstanten sind im Prinzip alle Werte, die Du sofort erkennen kannst. ("ABC", 'a', 3.14, 567 etc.)
Symbolische Konstanten haben einen Wert, aber der ist irgendwo mit einer literalen Konstante, oder einem konstanten Ausdruck, oder einem Wert einer Funktion definiert.
PS: Ich bin kein C++ Begriffs-Guru undhabe den "Standard" nicht gefressen. Ich kann nur etwas C++ ;)
PPS: Verzichte auf die persönliche Ansprache und schreibe allgemein, was Du nicht verstehst.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin RichterModerator Donnerstag, 13. Mai 2010 07:44
- Als Antwort markiert API Checker Sonntag, 16. Mai 2010 20:43
-
Danke !
Jetzt habe ich verstanden !
- Als Antwort markiert API Checker Sonntag, 16. Mai 2010 20:45