Forum: Compiler & IDEs Arrayindex inkrementieren


von Steffen (Gast)


Lesenswert?

Hallo!

Hab ne ganz kurze Frage:

counter = 0;

array[counter++] = 0x0a;

In welchem Index steht nun 0x0a? Mit anderen Worten: Wird counter vor 
der Zuweisung inkrementiert, oder erst danach?

Vielen Dank!

von Martin S. (drunkenmunky)


Lesenswert?

danach:
array[counter++] = 0x0a;

davor:
array[++counter] = 0x0a;

steht aber auch in jedem C Buch...

von Armin (Gast)


Lesenswert?

Deine Stichworte: Preincrement und Postincrement

von Steffen (Gast)


Lesenswert?

Super - ich danke euch!
Habe natürlich versucht, bei Google zu suchen, aber mangels Stichworte 
(die ich bis dato nicht kannte) ist es recht schwer.

von Martin S. (drunkenmunky)


Lesenswert?


von Stefan E. (sternst)


Lesenswert?

Aber:

Steffen schrieb:
> Wird counter vor
> der Zuweisung inkrementiert, oder erst danach?

Das ist undefiniert. Bei diesem Code
1
array[counter++] = counter;
könnte hinterher in array[0] eine 0 oder eine 1 stehen.

Als Arrayindex wird aber auf jeden Fall der Wert von counter von vor der 
Inkrementierung genommen.

von ET-Tutorials (Gast)


Lesenswert?

Preincrement und Postincrement findest Du auch im folgendenem Video:
http://et-tutorials.de/1226/variablenzuweisung-teil-2/

von Rolf Magnus (Gast)


Lesenswert?

Stefan Ernst schrieb:
> Aber:
>
> Steffen schrieb:
>> Wird counter vor
>> der Zuweisung inkrementiert, oder erst danach?
>
> Das ist undefiniert. Bei diesem Code
> array[counter++] = counter;
> könnte hinterher in array[0] eine 0 oder eine 1 stehen.

Oder eine 42, oder 4711. Oder beides. Oder das Universum, wie wir es 
kennen, hört auf zu existieren. Alles davon wäre nach ISO-C erlaubt.

> Als Arrayindex wird aber auf jeden Fall der Wert von counter von vor der
> Inkrementierung genommen.

Im obigen Code ist auch das nicht garantiert. Es ist undefiniertes 
Verhalten, und damit sind an dieser Stelle alle Garantien hinfällig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.