Hilfe zu Operatoren ++ und -- erbeten!!
-
- Beiträge: 92
- Registriert: Fr Jan 22, 2010 1:49 pm
Hilfe zu Operatoren ++ und -- erbeten!!
Hallo Leute ich bin gerade am C lernen und stehe bei den ++ und -- Operatoren auf dem Schlauch. Was genau ist nochmal der unterschied zwischen:
i++ Post Version und ++i Präversion????
Ich weiß das sie den Wert von i entweder um eins erhöhen oder um eins senken.
also wenn i=10 ist und dann ist doch ++i =11, bzw. --i =9, oder???
Für was braucht man das???
Vielen Dank für eure Hilfe!!
i++ Post Version und ++i Präversion????
Ich weiß das sie den Wert von i entweder um eins erhöhen oder um eins senken.
also wenn i=10 ist und dann ist doch ++i =11, bzw. --i =9, oder???
Für was braucht man das???
Vielen Dank für eure Hilfe!!
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Es ist einfach kürzer als die lange Version
i = i + 1 oder i = i - 1. Außerdem spart man sich durch die Prä und Post-Version wieder Zeilen Code.
Bei Post wird erst der Wert verwendet und dann erhöht und bei Prä erst der Wert erhöht und dann verwendet.
gruß stampuhh
i = i + 1 oder i = i - 1. Außerdem spart man sich durch die Prä und Post-Version wieder Zeilen Code.
Bei Post wird erst der Wert verwendet und dann erhöht und bei Prä erst der Wert erhöht und dann verwendet.
Code: Alles auswählen
i = 0;
array[i++] = 5; // array[0] = 5
array[i] = 10; // array[1] = 10
array[++i] = 6; //array[2] = 6
NachDenkSeiten.de
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Hilfe zu Operatoren ++ und -- erbeten!!
int i,jMdragonfloez hat geschrieben:Hallo Leute ich bin gerade am C lernen und stehe bei den ++ und -- Operatoren auf dem Schlauch. Was genau ist nochmal der unterschied zwischen:
i++ Post Version und ++i Präversion????
int j;
i = 1;
j = i++; // POST: Es wird erst der aktuelle Wert von 1 zurückgegeben und DANN erst um eins erhöht.
// Ab hier ist j == 1 und i == 2.
i = 1; // i ist wieder 1
j = ++i; // PRE: Es wird erst um eins erhöht und dann der aktuelle Wert von 2 zurückgegeben
// Ab hier ist j == 2 und i == 2
Solltest Du die freie Auswahl haben, ob Du i++ oder ++i schreiben kannst, dann gewöhne Dich an ++i.
In C++ (rate mal, wie der Name entstand...) ist ++C in der Regel eigentlich die bessere Option und daran kann man sich gleich mal gewöhnen.
Erstmal zum (Durch-)Zählen.dragonfloez hat geschrieben:Für was braucht man das???
Dann unterscheiden insbesondere ältere Prozessoren zwischen INC (sehr schnell), ADDQ (add quick, nicht ganz so schnell) und ADD. Da sich i++ in C mit INC abbilden lässt und i += 1; eventuell auf ADD abgebildet wird, hatte es früher durchaus Sinn, zwischen i++ und anderen Varianten zu unterscheiden. Häufig ist i+=x; auch noch schneller als i = i + x; denn ein Compiler muss das nicht zwangsläufig optimieren können.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
-
- Beiträge: 92
- Registriert: Fr Jan 22, 2010 1:49 pm
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Hallo Leute,
vielen Dank für eure schnelle Hilfe. Sorry bin immer noch ein bischen kurzsichtig.
Also:
und
Vielen Dank, bitte um Nachsicht
vielen Dank für eure schnelle Hilfe. Sorry bin immer noch ein bischen kurzsichtig.
Also:
Code: Alles auswählen
#include <stdio.h>
int main()
{
int a=1, b=2;
........
if ( a++==1 ) /* Ist dann a=1 und wie oder warum wirkt sich das auf b aus? ist b dann 2? */
{.....}
return 0;
}
Code: Alles auswählen
#include <stdio.h>
int main()
{
int a=1, b=2;
........
if ( ++a==1 ) /* Ist dann a=2 und wie oder warum wirkt sich das auf b aus? ist b dann auch 2? */
{.....}
return 0;
}
Vielen Dank, bitte um Nachsicht
Zuletzt geändert von dragonfloez am Sa Jan 23, 2010 8:33 pm, insgesamt 1-mal geändert.
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Du liegst in beiden Fällen richtig. Aber wie kommst du darauf, dass sich das auf b auswirkt?
-
- Beiträge: 92
- Registriert: Fr Jan 22, 2010 1:49 pm
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Hallo nufan,
mich hat nur das Verhältniss i und j unten etwas verwirrt. Wie gesagt habe erst begonnen mit Programmieren. ABER, was für ein Sinn verfolgt dann eigentlich i++??????
mich hat nur das Verhältniss i und j unten etwas verwirrt. Wie gesagt habe erst begonnen mit Programmieren. ABER, was für ein Sinn verfolgt dann eigentlich i++??????
[/quote]Xin hat geschrieben: int i,jM
int j;
i = 1;
j = i++; // POST: Es wird erst der aktuelle Wert von 1 zurückgegeben und DANN erst um eins erhöht.
// Ab hier ist j == 1 und i == 2.
i = 1; // i ist wieder 1
j = ++i; // PRE: Es wird erst um eins erhöht und dann der aktuelle Wert von 2 zurückgegeben
// Ab hier ist j == 2 und i == 2
Re: Hilfe zu Operatoren ++ und -- erbeten!!
In diesem Beispiel weist du den Wert einer Variable der anderen zu. Da macht es natürlich einen Unterschied, ob du vorher oder nachher erhöhst.
Es gibt Fälle in denen du zuerst den alten Wert brauchst, den du danach aber erhöhen musst. Das hört sich vielleicht unnütz an, wirst du aber noch oft genug brauchen.dragonfloez hat geschrieben:was für ein Sinn verfolgt dann eigentlich i++?
-
- Beiträge: 92
- Registriert: Fr Jan 22, 2010 1:49 pm
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Hallo nufan oder an alle,
Also
Vielen Dank
Also
Code: Alles auswählen
#include <stdio.h>
int main()
{
int a=1, b=2;
........
if ( a++==1 ) /* a=1*/
{.....}
printf ("%d", ++a + b); /*ist dann das Ergebnis 4?? , da ++a=2 ist und b=2 ODER könnte ich da jetzt denn ++ weglassen um trotzdem den Wert a=2 zu erzeugen*/
return 0;
}
Vielen Dank
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Code: Alles auswählen
int a=1, b=2;
Code: Alles auswählen
if ( a++==1 ) /* a=1*/
Code: Alles auswählen
printf ("%d", ++a + b);
Nun wird a sofort auf 3 erhöht und b (2) hinzugezählt -> Ausgabe ist 5.
-
- Beiträge: 92
- Registriert: Fr Jan 22, 2010 1:49 pm
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Hallo,
dann ist also
UND
Habe ich das so richtig verstanden?
Vielen Dank
dann ist also
Code: Alles auswählen
#include <stdio.h>
int main()
{
int a=1, b=2;
........
if ( a++==1 ) /*jetzt ist immernoch a=1, also wird die if Anweisung ausgeführt. Es wird aber bei der nächsten Verwendung von a weiter unten im Programm, a=2 */
{.....}
.........
printf ("%d", a + b); /*ist dann das Ergebnis 4 ???*/
return 0;
}
UND
Code: Alles auswählen
#include <stdio.h>
int main()
{
int a=1, b=2;
........
if ( ++a==2 ) /*jetzt und weiter unten im Programm ist a=2; ALSO wird JETZT die if Anweisung ausgeführt */
{.....}
.........
printf ("%d", a + b); /*ist dann das Ergebnis 4 ???*/
return 0;
}
Vielen Dank