inkrement / dekrement < Sonstige < Schule < Informatik < Vorhilfe
|
Aufgabe | Welche Werte druckt die printf-Anweisung am Bildschirm aus?
{
unsigned i = 1, j = 10, k = 0;
k = --i + j++;
[mm] printf("%u\t%u\t%u\n", [/mm] i, j, k);
} |
Hallo, ich vermute, dass da folgendes am bildschirm erscheint:
1 10 11 also i=1 j=10 unf k=(1-1) + (10+1) = 11
Ich habe aber eine Lösung von dieser Aufgebe, die folgendmaßen aussieht:
0 11 10. Welche Lösung ist denn hier richtig? Falls die 2. Lösung richtig ist: Warum?
danke
|
|
|
|
> Welche Werte druckt die printf-Anweisung am Bildschirm
> aus?
1: |
| 2: | > {
| 3: | > unsigned i = 1, j = 10, k = 0;
| 4: | > k = --i + j++;
| 5: | > printf("%u\t%u\t%u\n", i, j, k);
| 6: | > }
|
> Hallo, ich vermute, dass da folgendes am bildschirm
> erscheint:
>
> 1 10 11 also i=1 j=10 unf k=(1-1) + (10+1) = 11
>
> Ich habe aber eine Lösung von dieser Aufgebe, die
> folgendmaßen aussieht:
>
> 0 11 10. Welche Lösung ist denn hier richtig? Falls die 2.
> Lösung richtig ist: Warum?
0 11 10 ist richtig!
schau dir die zeile an:
k = --i + j++; erst wird i um 1 verringert, dann die beiden zahlen addiert und dann (also wenn das k schon den neuen wert hat) wird j erhöht. somit wird k=(1-1)+10
dass j erhöht wurde, siehst du erst im printf
>
> danke
|
|
|
|
|
Aufgabe | Also die 0 ist ja klar. da ist ein prä-dekrement.
aber die 11 und 10...wie kommt man darauf?
Mich stört die Sache mit dem Post-Inkrement bei j.
Wie kommt man denn auf die 11 und 10? Wann GENAU wird denn i um 1 kleiner und 10 um 1 größer?
Kannst du mir das nochmal schritt für schritt erklären? |
Danke.
|
|
|
|
|
> Also die 0 ist ja klar. da ist ein prä-dekrement.
> aber die 11 und 10...wie kommt man darauf?
> Mich stört die Sache mit dem Post-Inkrement bei j.
> Wie kommt man denn auf die 11 und 10? Wann GENAU wird denn
> i um 1 kleiner und 10 um 1 größer?
> Kannst du mir das nochmal schritt für schritt erklären?
> Danke.
bei nem prefix wird ja erst der wert verändert, dann zurückgegeben, bei nem postfix erst der wert zurückgegeben und dann verändert. auf obiges beispiel angewendet:
k = --i + j++;
i wird verändert und der wert (1-1) zurückgegeben; j wird zurückgegeben, beide zahlen verrechnet und in k abgelegt. dann wird j verändert
|
|
|
|