009
01.03.2009, 02:58 Uhr
0xdeadbeef
Gott (Operator)
|
Hmm...so halb. ++ bindet stärker als *, dementsprechend ist *c++ das selbe wie *(c++), der Rückgabewert von c++ muss also konsequenterweise vor der Auswertung von * bestimmt werden. Allerdings hat c++ zusätzlich zum Wert noch eine Nebenwirkung, nämlich die nachträgliche Erhöhung des Wertes von c, und von der ist lediglich garantiert, dass sie bis zum nächsten Sequenzpunkt ausgeführt wird. Klammern sind keine Sequenzpunkte (und selbst wenn sie es wären, wäre der Wert von c++ immer noch c vor der Erhöhung).
Das ist übrigens, wo ich gerade darüber nachdenke, auch ein Unterschied zwischen ++c,*(c-1) - dies enthält mit dem Komma einen Sequenzpunkt. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 01.03.2009 um 02:59 Uhr von 0xdeadbeef editiert. |