30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

72 3. Operatoren<br />

Wieso eigentlich kommt man im oberen Programm durch e<strong>in</strong>en e<strong>in</strong>fachen<br />

Cast plötzlich von e<strong>in</strong>em dargestellten Zeichen zu e<strong>in</strong>er dargestellten Zahl?<br />

Ne<strong>in</strong>, völlig falsch... es ist weder weiße noch schwarze Magie im Spiel und ich<br />

habe den Output auch nicht nachträglich im Buch verändert. Bei der kurzen<br />

Beschreibung von cout <strong>in</strong> Abschnitt 2.3 habe ich bereits ganz kurz erklärt,<br />

dass es im Pr<strong>in</strong>zip egal ist, was man ihm übergibt, denn es wird immer die<br />

Repräsentation gewählt, die e<strong>in</strong>em Datentyp entspricht. Bei e<strong>in</strong>em char ist<br />

die default Repräsentation eben, dass er als Zeichen ausgegeben wird, also<br />

hier als x. Bei e<strong>in</strong>em <strong>in</strong>t wird per Default die Darstellung als Zahl gewählt.<br />

Genau das haben wir uns hier zunutze gemacht: Der Cast auf <strong>in</strong>t32 bewirkt,<br />

dass cout als Datentyp eben e<strong>in</strong>en <strong>in</strong>t32 vorgesetzt bekommt, den es<br />

natürlich als Zahl darstellen will. Dass die dargestellte Zahl dem Character-<br />

Code von x auf der jeweiligen Zielplattform entspricht, versteht sich von<br />

selbst.<br />

Vorsicht Falle: Neben dem bereits erwähnten Problem, dass man die Art<br />

der Umwandlung nicht mehr <strong>in</strong> der Hand hat, gibt es e<strong>in</strong>en zweiten Grund,<br />

warum man e<strong>in</strong>en C-Style Cast nicht verwenden sollte: Se<strong>in</strong>e Auff<strong>in</strong>dbarkeit<br />

(oder besser nicht-Auff<strong>in</strong>dbarkeit) im Code bei nachträglichen Änderungen.<br />

Es ist e<strong>in</strong> Leichtes, automatisch nach bestimmten Vorkommen von<br />

static_cast und den anderen speziellen Operatoren zu suchen. Es ist unendlich<br />

mühsam und gleichzeitig fehlerträchtig, nach dem Vorkommen zweier<br />

runder Klammern mit e<strong>in</strong>em Datentyp dazwischen zu suchen, denn hier kann<br />

man <strong>in</strong> vielen Fällen nichts mehr automatisieren.<br />

Das bedeutet, dass die E<strong>in</strong>stellung vieler Entwickler, e<strong>in</strong>fach e<strong>in</strong>mal e<strong>in</strong>en<br />

C-Style Cast zu verwenden, weil er schneller geschrieben ist und diesen<br />

nachträglich gegen die “richtigen” Casts auszutauschen, gar nicht so toll ist.<br />

Durch die schlechte Automatisierbarkeit dieses Vorgangs bleiben im Regelfall<br />

dann die C-Style Casts e<strong>in</strong>fach im Code stehen und das ist garantiert nicht<br />

das, was man erreichen will!

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!