13.07.2015 Aufrufe

Vordefinierte Makros und symbolische Konstanten Bestimmte ...

Vordefinierte Makros und symbolische Konstanten Bestimmte ...

Vordefinierte Makros und symbolische Konstanten Bestimmte ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2.2. Gr<strong>und</strong>lagen 37int i;int &r = i;// ...r = 7;printf( "‘%d\n"’, i );Listing 2.25. ReferenzsyntaxDieVariable rist im Beispiel eine Referenzvariable. Sie verweist auf i, hataberkeine Zeigersyntax,sondern verhält sich so,als wäre sie das Objekt selbst.Wiein dem Beispiel gezeigt,muss die Referenzvariable an der Stelle der Definitionauch initialisiert werden. Die Initialisierung einer Referenz bedeutet, dass sieauf eine Speicherstelle gerichtet wird. Danach kann die Referenz nicht mehrauf eine andere Speicherstelle umgerichtet werden.Technisch macht der Compiler aus der Referenz das, was er auch auseinem Zeiger macht. Zeiger <strong>und</strong> Referenzen verhalten sich also aus Laufzeitgesichtspunktenheraus identisch. Dennoch tendiert man in C++ an vielenStellen eher zur Verwendung von Referenzen als von Zeigern.2.2.11TypenkonvertierungIn C <strong>und</strong> C++ sind Daten typisiert. Das heißt, dass alle Daten mit einer Informationausgestattet sind, wie sie im Speicher liegen <strong>und</strong> wie die Bytes diesesSpeichers interpretiert werden.Das hat unter anderem mathematische Konsequenzenfür Zahlenwerte, wie sie im Abschnitt 2.2.4 auf Seite 22 beschriebenwerden. Der Datentyp ist also die Form, in der die Daten vorliegen. SollenDaten mit unterschiedlichem Datentyp miteinander über eine Operation inBeziehung gebracht werden, so muss eine Typenkonvertierung erfolgen.Eine einfache Typenkonvertierung liegt beispielsweise vor,wenn ein ganzzahligerWert einer Fließkommavariablen zugewiesen wird.long i;double d;// ...i = 42;d = i;Listing 2.26. Implizite TypenkonvertierungIn diesem Fall müssen Daten, die vorher in vier Bytes Platz hatten, in dieacht Bytes der double-Variablen verteilt werden – natürlich streng nach dendafür vorgesehenen Regeln. Im Beispiel wird diese Konvertierung durch denCompiler erledigt, da es keine mathematischen oder sonstigen Gründe gegeneine solche Konvertierung gibt. Der Wertebereich des long-Datentyps wirddurch den Wertebereich des double-Datentyps umschlossen. Wenn jedoch

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!