30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

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.

30 2. Datentypen und Variablen<br />

teilen wir dem Compiler mit, dass wir cout aus dem Namespace std<br />

verwenden wollen. Würden wir diese Anweisung nicht im Programm<br />

stehen haben, dann würde sich der Compiler bei jeder Verwendung von<br />

cout beschweren, dass er diesen Stream nicht kennt.<br />

Ganz gleich verhält es sich mit endl. E<strong>in</strong>e genaue Erklärung, was es<br />

mit Namespaces auf sich hat, f<strong>in</strong>det sich <strong>in</strong> Kapitel 14. E<strong>in</strong>stweilen ist<br />

es genug, zu wissen, dass man mittels us<strong>in</strong>g die Verwendung gewisser<br />

Teile aus e<strong>in</strong>em Namespace bekannt gibt.<br />

Fassen wir also noch e<strong>in</strong>mal die E<strong>in</strong>zelteile <strong>in</strong> Zeile 17 zusammen, dann<br />

liest sie sich so: Schreibe h<strong>in</strong>tere<strong>in</strong>ander den Str<strong>in</strong>g "a_global_var_: "<br />

und den Inhalt der <strong>in</strong>t-Variablen a_global_var_, gefolgt von e<strong>in</strong>em Zeilenumbruch<br />

auf den Standard-Output des Programms.<br />

• In Zeile 20 f<strong>in</strong>det sich e<strong>in</strong> Beispiel dafür, dass Variablen <strong>in</strong> C ++ beliebig im<br />

laufenden Code def<strong>in</strong>iert werden können, was <strong>in</strong> C nicht möglich ist.<br />

• In den Zeilen 24–28 wird e<strong>in</strong>e besondere Eigenschaft von Variablen vom<br />

Typ bool demonstriert: Sie s<strong>in</strong>d kompatibel zu <strong>in</strong>t-Variablen <strong>in</strong> der H<strong>in</strong>sicht,<br />

dass man beliebige Zahlen zuweisen kann. Allerd<strong>in</strong>gs werden die<br />

Zahlen bei der Zuweisung immer genau auf die vordef<strong>in</strong>ierten Wahrheitswerte<br />

true und false, also auf 0 und 1 reduziert.<br />

• In den Zeilen 30–32 wird kurz demonstriert, wie man untersuchen kann, ob<br />

char auf e<strong>in</strong>er Zielplattform nun per Default als signed oder als unsigned<br />

<strong>in</strong>terpretiert wird: Liefert Zeile 32 als Output die Zahl 255, so wird char<br />

als unsigned <strong>in</strong>terpretiert. Liefert sie allerd<strong>in</strong>gs als Output -1, so liegt per<br />

Default e<strong>in</strong>e signed-Interpretation zugrunde.<br />

Wem jetzt nicht ganz klar ist, wie man plötzlich von 255 auf -1 kommt: 255<br />

ist die längste Zahl, die man mit 8 Bit ohne Vorzeichen darstellen kann.<br />

Dabei s<strong>in</strong>d <strong>in</strong>tern alle Bits gesetzt (=auf 1). Wird diese Zahl nun als signed<br />

<strong>in</strong>terpretiert, dann wird das höchstwertige Bit davon zum Vorzeichenbit.<br />

Weil dieses gesetzt ist, wird die ganze Zahl als negative Zahl angesehen. Die<br />

8 Bit-Darstellung von -1 entspricht genau dem, was <strong>in</strong> der Zahl enthalten<br />

ist: Es s<strong>in</strong>d alle Bits gesetzt.<br />

Lesern, die noch e<strong>in</strong> wenig unsicher mit der <strong>in</strong>ternen Darstellung von<br />

b<strong>in</strong>ären Ganzzahlen s<strong>in</strong>d, möchte ich an dieser Stelle die Lektüre von Anhang<br />

A.2 aus <strong>Softwareentwicklung</strong> <strong>in</strong> C empfehlen.<br />

• Zeile 42 <strong>in</strong> aFunction demonstriert noch, dass auch als static def<strong>in</strong>ierte<br />

Variablen implizit <strong>in</strong>itialisiert werden.<br />

• Last, but not least demonstriert Zeile 46, dass un<strong>in</strong>itialisierte Variablen nun<br />

wirklich ke<strong>in</strong>e sehr gute Idee s<strong>in</strong>d. Dass e<strong>in</strong>e solche Variable “irgende<strong>in</strong>en”<br />

nicht vorherbestimmbaren Wert hat, sieht man e<strong>in</strong>deutig am Output des<br />

Programms.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!