Seite 1 von 2
Hilfe zu Operatoren ++ und -- erbeten!!
Verfasst: Sa Jan 23, 2010 10:32 am
von dragonfloez
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!!
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Verfasst: Sa Jan 23, 2010 10:47 am
von stampuhh
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.
Code: Alles auswählen
i = 0;
array[i++] = 5; // array[0] = 5
array[i] = 10; // array[1] = 10
array[++i] = 6; //array[2] = 6
gruß stampuhh
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Verfasst: Sa Jan 23, 2010 4:55 pm
von Xin
dragonfloez 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 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
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.
dragonfloez hat geschrieben:Für was braucht man das???
Erstmal zum (Durch-)Zählen.
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.
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Verfasst: Sa Jan 23, 2010 8:23 pm
von dragonfloez
Hallo Leute,
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;
}
und
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
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Verfasst: Sa Jan 23, 2010 8:32 pm
von nufan
Du liegst in beiden Fällen richtig. Aber wie kommst du darauf, dass sich das auf b auswirkt?
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Verfasst: Sa Jan 23, 2010 8:39 pm
von dragonfloez
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++??????
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
[/quote]
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Verfasst: Sa Jan 23, 2010 8:46 pm
von nufan
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.
dragonfloez hat geschrieben:was für ein Sinn verfolgt dann eigentlich i++?
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.
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Verfasst: Sa Jan 23, 2010 9:04 pm
von dragonfloez
Hallo nufan oder an alle,
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!!
Verfasst: Sa Jan 23, 2010 9:32 pm
von nufan
Du initialisierst die Variablen mit 1 und 2.
a ist in dieser Bedingung noch 1, sofort danach wird auf 2 erhöht.
Vor dieser Anweisung: a = 2, b = 2
Nun wird a sofort auf 3 erhöht und b (2) hinzugezählt -> Ausgabe ist 5.
Re: Hilfe zu Operatoren ++ und -- erbeten!!
Verfasst: Sa Jan 23, 2010 9:44 pm
von dragonfloez
Hallo,
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;
}
Habe ich das so richtig verstanden?
Vielen Dank