Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Schleife (http://www.informatikerboard.de/board/thread.php?threadid=2836)


Geschrieben von filli122 am 04.02.2016 um 17:34:

  Schleife

Meine Frage:
Hallo,

wenn ich folgende Schleife gegeben habe:

int i = 0
while(++i < n){
i}

ist mein i dann innerhalb der Schleife noch mein Ausgangs- i (also 0) oder schon das um eins erhöhte i (also 1, da die Schleife ja solange läuft, bis i erhöht um 1 kleiner als n ist) ?

Meine Ideen:
Ich hoffe meine Frage ist verständlich,
vielen Dank schon mal für eure Hilfe!



Geschrieben von eulerscheZahl am 04.02.2016 um 17:41:

 

Erst wird die Eintrittsbedingung ausgewertet (also auch i erhöht), und dann in den Block gegangen.
Das kannst du auch ganz einfach ausprobieren:
code:
1:
2:
3:
4:
5:
6:
7:
8:
#include <stdio.h>

int main() {
	int i = 0;
	while (++i < 3) {
		printf("%d ", i);
	}
}

Ausgabe: 1 2
machst du das ++i zu i++, gibt es noch eine 3 zusätzlich in der Ausgabe. Der erste Ausgabewert ist aber weiterhin 1.



Geschrieben von filli122 am 04.02.2016 um 17:48:

 

Aber mein i ist doch 0... Wieso ist dann meine erste Zahl die 1?



Geschrieben von eulerscheZahl am 04.02.2016 um 17:51:

 

Weil es in der Bedinungen beim while erhöht wird.
Und das passiert vor der Ausgabe, also ist das i bereits 1.



Geschrieben von filli122 am 04.02.2016 um 18:09:

 

ah okay, also auch wenn dort nicht ++i sondern i++ stehen würde, wäre meine erste Zahl die 1... danke! smile



Geschrieben von eulerscheZahl am 04.02.2016 um 22:00:

 

Die erste Zahl ist in beiden Fällen die 1.
Ob i++ oder ++i dasteht hat nur einen Einfluss auf die letzte ausgegebene Zahl.
Aber wie gesagt: probier es einfach aus.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH