Post Increment in While-Schleife in C

Lesezeit: 3 Minuten

Benutzer-Avatar
Algo

Hier ist ein sehr einfaches C-Programm:

int main()
{
    int i = 0;
    while(i++ < 10)
         printf("%d\n", i);

    return 0;
}

Das Ergebnis ist:

1
2
3
4
5
6
7
8
9
10

Warum 0 ist nicht die erste Nummer zu drucken? Und wenn ich die ersetze i++ mit ++i Ich bekomme das:

1
2
3
4
5
6
7
8
9

Für beide i++ und ++i Die erste Zahl ist 1.

Ich hatte erwartet, die zu sehen 0 for post increment in while-Schleife while().

Vielen Dank.

  • i++ erhöht die Ausführungszeit, natürlich ist es eine.

    – Bernardo Lima

    27. August 2014 um 23:51 Uhr

  • Unabhängig vom verwendeten Bediener drucken Sie i nach es wurde modifiziert, also wie können Sie sehen 0!?

    – StoryTeller – Unslander Monica

    27. August 2014 um 23:51 Uhr

  • while(i++ < 10) /*i is incremented here*/ printf("%d\n", i);

    – HolyBlackCat

    27. August 2014 um 23:53 Uhr

  • C-Programmierer lieben es, SO aus irgendeinem Grund abzulehnen, es ist, als wäre C nicht die verwirrendste Sprache, die es je gab.

    – rasieren

    10. Januar 2016 um 11:31 Uhr

Benutzer-Avatar
paxdiablo

Das i++ (und ++i) erfolgt im Rahmen der while Ausdrucksauswertung, die passiert Vor der Druck. Das heißt, es wird immer gedruckt 1 anfänglich.

Der einzige Unterschied zwischen der i++ und ++i Varianten ist, wenn das Inkrement innerhalb des Ausdrucks selbst erfolgt und dies den ausgegebenen Endwert beeinflusst. Der äquivalente Pseudocode für jeden lautet:

while(i++ < 10)            while i < 10:
                               i = i + 1
    printf("%d\n", i);         print i
                           i = i + 1

und:

                           i = i + 1
while(++i < 10)            while i < 10:
    printf("%d\n", i);         print i
                               i = i + 1

Sagen wir i kommt auf 9. Mit i++ < 10es verwendet 9 < 10 für die while Ausdruck dann Schritte i bis 10 vor dem Drucken. Der Scheck verwendet also 9 und gibt dann 10 aus.

Mit ++i < 10es erhöht sich zuerst i dann Verwendet 10 < 10 für die while Ausdruck. Die Prüfung verwendet also 10 und nicht nichts drucken, da die Schleife aufgrund dieser Prüfung beendet wurde.

i++ ist Post-Inkrement und ++i ist Vorinkrement. Post-Increment bedeutet, dass nach dem Inkrementieren des Objekts der vorherige Wert zurückgegeben wird. Pre-Increment bedeutet, dass das Objekt inkrementiert und dann zurückgegeben wird. In beiden Fällen wird das Objekt inkrementiert, wenn sein Ausdruck ausgewertet wird, und deshalb erhalten Sie es nicht 0 als erste Ausgabe.

Sie erhöhen i nach Überprüfung und vor dem Drucken. Erhöhen Sie entweder nach dem Prüfen und Drucken oder verwenden Sie a do while Schleife:

int main()
{
    int i = 0;
    do {
        printf("%d\n", i);
    } while(i++ < 10);
    return 0;
}

Wenn die While-Schleife while(i++ < 10) ausgewertet wird, prüft es den Wert von i, addiert eins dazu und vergleicht die alt Wert auf 10. Wenn Sie ihn auf ändern while(++i < 10) es erhöht den Wert von i bevor Sie den neuen Wert mit 10 vergleichen.

So oder so, bis Sie zur nächsten Aussage kommen i wurde bereits erhöht.

Wenn Sie von 0 bis 9 drucken möchten, können Sie es versuchen

    while(i < 10)
     printf("%d\n", i++);

stattdessen. In diesem Fall ist der Wert von i wird erhöht nach Bereitstellung seines ursprünglichen Werts für die printf Aussage.

Benutzer-Avatar
RMVIVEK ARNI

Die Whie-Schleifen prüfen, ob die Bedingungen wahr sind, werden ausgeführt, während blockiert und getestet wird

Bedingungen ist falsch beendet die While-Schleife.

siehe über Post-Inkrement innerhalb einer While-Schleife ++

void main()

{

int rmvivek;

clrscr();

printf(“ëGeben Sie die Integer-Werte 1 bis 10 ein”);

scanf(“%d”,&rmvivek);

while(10>= rmvivek++)

{

printf(“der Wert ist=%d\n”, rmvivek);

}

getch();

}

1051140cookie-checkPost Increment in While-Schleife in C

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy