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!
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