C-Programmierung -> Zahlen verdoppeln mit while
Aktuell habe ich folgende Kontruktion:
include<stdio.h>int main()
{
int i=1;
while(i <= 100)
{ printf("Zahl %d\n", i);
**i++;**
}
getch();
return 0; }
Meine Zahlen werden also aktuell solange um 1 erhöht mis 100 erreicht ist.
Mein Problem liegt bei dem ** i++**.
Wenn ich beispielsweise i+2 stattdessen eingebe, kommt unendlich of nur die 1 in der Konsole, benso mit * oder ähnlichem, nur i++ funktioniert, was mache ich falsch?
6 Antworten
i+2 ist auch falsch. Da sagst du dem Programm einfach "berechne i+2", aber du sagst dem Programm nicht was es mit dem Wert machen soll, deswegen ändert sich nichts. Was du brauchst ist i+=2. Das heißt "i + 2 und schreibe in i".
Ein Stern ist ein Zeiger auf eine Adresse und keine Variabel. Ein Doppelstern ist ein Zeiger, der auf eine Liste von Zeigern zeigt. Wobei die Sterne immer VOR der Variabeln stehen.
Also einfach: i++;
Oder auch { printf("Zahl %i\n", i++};
wichtig ist, folgendes : stehen die Operanden VOR der Variabel wird zu erst die Operation ausgeführt. Steht die Varibale, wird erst der Wert übernommen und erst danach wird die Operation ausgeführt.
Wenn du den Wert um 2 erhöhen willst, dann musst du i = i + 2; oder i += 2 eingeben.
Wie schon viele andere hier kann ich dir auch nur sagen, dass keine Zuweisung besteht korrekt wäre also "i = i + 2" oder "i += 2"
Was meinst du denn aber mit "Zahlen verdoppeln?
Du musst i = i+2 reinschreiben. Bei C geht glaub ich auch i+=2
Da sollten eigentlich verschiedene Ergebnisse rauskommen.
i+=2 heißt "nimm i, addiere 2 und schreib das Ergebnis wieder nach i".
i*=2 müsste heißen "nimm i, multipliziere es mit 2 und schreib das Ergebnis wieder nach i".
Ich weiß es aber ehrlichgesagt nicht genau. Hab nur testweise mal ein bisschen in C rumgewerkelt. Das ist schon ein paar Jahre her.
i+2 rechnet nur und weisst es nicht wieder der Variable i zu. Richtig wäre:
i = i + 2;
Okay hat mir wirklich sehr geholfen :) kannst du noch erklären warum ebenso i+=2 bzw i*=2 funktioniert?