000
25.07.2006, 12:19 Uhr
Yadgar
|
High!
Tagsüber büffeln, abends kreativ proggen, so läuft es im Moment bei mir... bei der Hitze ist ersteres nicht unbedingt das reine Vergnügen. Trotzdem habe ich mich an ein neues Kapitel des "Aupperle" gemacht, und zwar an das über Konstanten und volatile Objekte. Dort findet sich eine Übung mit der Frage:
<b>Was kann man über die Ausdrücke
a) bool b = i == i;
b) i++;
c) while ( !i );
sagen, wenn i volatile (bzw. nicht volatile) deklariert ist? </b>
Meine Antwort:
a) nicht volatil: b ist auf jeden Fall true. volatil: b ist nicht eindeutig definiert, da nach der Auswertung des linken, aber noch vor der des rechten i ein anderer Wert zugewiesen werden kann, wodurch i == i false werden würde.
b) nicht volatil: i wird um 1 erhöht volatil: i kann zwischen seiner Erstauswertung und der Inkrementierung um 1 einen völlig neuen Wert bekommen, ist folglich anschließend nicht zwingend um 1 erhöht.
c) nicht volatil: Schleife wird solange durchlaufen, wie i den Wert 0 hat volatil: externe Neuzuweisung kann zum Abbruch der Schleife führen
Habe ich das Konzept "volatile" richtig verstanden? Was gibt es eigentlich außer der Berücksichtigung externer Zugriffe bei der Programmierung von Hardware-Schnittstellen sonst noch an praktischen Anwendungen für volatile?
Bis bald im Khyberspace!
Yadgar
Programmier-Blog: http://home.arcor.de/yadgar/khyberspace/comput-d.html -- Flagmaker - ein Programmier-Blog |