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 inach 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
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 idann 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.
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();
}
10511400cookie-checkPost Increment in While-Schleife in Cyes
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 sehen0
!?– 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