Ist ++i anders als i++???



  • Original erstellt von JoelH:
    Ich handle nach der Maxime 'Keep it simple and stupid !' sprich wenn schon dann
    i++;
    y=i;

    Ich doch auch. Nur hast Du fett behauptet, i++ sei leichter zu raffen, weil es i=i+1 bedeute.

    Ich handle nach der Maxime 'Keep it simple and stupid !' sprich wenn schon dann
    ++i;
    y=i;

    Denn wenn man das y im selben Ausdruck mit ins Spiel bringt (was man natürlich vermeiden sollte), dann ist ++i das gleiche wie i=i+1. Und wenn mans nicht tut, isses egal.
    Auf keinen Fall aber kann Dein Argument mit der Einfachheit begründen, warum Du i++ vorziehst, statt ++i zu nehmen.

    [ Dieser Beitrag wurde am 28.11.2002 um 14:26 Uhr von volkard editiert. ]



  • volkard:
    Auf keinen Fall aber kann Dein Argument mit der Einfachheit begründen, warum Du i++ vorziehst, statt ++i zu nehmen.

    diese Aussage begründete ich eigentlich schon weiter oben
    =>
    i = i + 1
    =>
    i += 1
    =>
    i ++

    das i steht immer an erster Stelle. So meinte ich meinen Satz dort.

    ich schreibe ja nicht
    =>
    1 + i = i
    =>
    gibt kein äquvalent denn 1 += i ist ja quatsch ( in diesem zusammenhang)
    =>
    ++i

    dann hätte wohl eher ++i Eingang gefunden.



  • Original erstellt von JoelH:
    **diese Aussage begründete ich eigentlich schon weiter oben
    =>
    i = i + 1
    =>
    i += 1
    =>
    i ++

    das i steht immer an erster Stelle. So meinte ich meinen Satz dort.

    ich schreibe ja nicht
    =>
    1 + i = i
    =>
    gibt kein äquvalent denn 1 += i ist ja quatsch ( in diesem zusammenhang)
    =>
    ++i

    dann hätte wohl eher ++i Eingang gefunden.**

    heilandsblechle! das ist ja buchstabenmystik. klar, daß ich dem nicht folgen kann.



  • Buchstabenmystik ??

    Cooler Begriff.
    Für mich ist es einfach eine logische Folge der Evolution von Programmiersprachen und der damit einhergehenden Versuch meines Gehirns etwas gelerntes an die neuen Strukturen, relativ einfach und einprägsam, an zu passen.



  • @volkard: Jetzt wär ich doch glatt auf die Idee gekommen deinen Ursprung im Schwarzwald zu vermuten aber dann fiel mir ein, dass die dort Heiligsblechle sagen 😉

    [ Dieser Beitrag wurde am 28.11.2002 um 14:41 Uhr von CengizS editiert. ]



  • Ähh...ich tu mir schwer euren Beiträgen zu folgen daher will ich mal kurz das wiedergeben, was ihr wahrscheinlich eh richtig meint.

    i++ und ++i ist nicht dasselbe.
    ++i ist pre-Increment und i++ ist post-Incremet.

    Postincrement bedeutet, dass zuerst der Wert von i gilt und danach um eins erhöht wird und Preincrement genau das Gegenteil, zuerst 1 dazuaddiert und dann der Wert i zurückgegeben.

    Für den Fall dass die for-Schleife so aus sieht ist es egal:

    for ( i=0; i<10; i++ ) 
    ...  // läuft 10 mal durch
    

    Folgende beiden Beispiele sind aber nicht mehr das selbe:

    for ( i=0; i++<10; )
    ...  // läuft 10 mal durch
    
    for ( i=0; ++i<10; )
    ...  // läuft 9 mal durch
    


  • Original erstellt von ms:
    **
    Folgende beiden Beispiele sind aber nicht mehr das selbe:

    for ( i=0; i++<10; )
    ...  // läuft 10 mal durch
    
    for ( i=0; ++i<10; )
    ...  // läuft 9 mal durch
    

    **

    genau solche Sachen hab ich gemeint !
    Was bringt dir dieses kryptische Geschreibsel ? Dem For Befehl wurden nicht umsonst 3 Parameter geschenkt.

    [ Dieser Beitrag wurde am 28.11.2002 um 15:31 Uhr von JoelH editiert. ]



  • @JoelH: w3IL WIr 933K5 E5 $o L1383n



  • wow, bei Geeks musste ich echt nachdenken.



  • joelh: also diese ignoranz ist ja nicht zu fassen. du solltest mal dein gehirn resetten.
    der zusammenhang zwischen i++ und ++i sieht (zumindest konzeptionell) so aus:

    const T operator++(int){
        T temp(*this);
        ++*this;
        return temp;
    }
    

    wenn in deinem gehirn was anderes ist, kratz es raus und verbrenn es (hehe, nicht das gehirn)

    und dann tu dies in dein gehirn:
    prae - vor - ++ steht vor dem i - es wird erhoeht (++), bevor der wert von i genommen wird
    post - nach - ++ steht nach dem i - es wird erhoeht, nachdem der wert von i genommen wurde

    [ Dieser Beitrag wurde am 28.11.2002 um 15:42 Uhr von PeterTheMaster editiert. ]



  • Original erstellt von PeterTheMaster:
    joelh: also diese ignoranz ist ja nicht zu fassen. du solltest mal dein gehirn resetten.

    der zusammenhang zwischen i++ und ++i sieht (zumindest konzeptionell) so aus:

    const T operator++(int){
        T temp(this);
        ++*this;
        return temp;
    }
    

    wenn in deinem gehirn was anderes ist, kratz es raus und verbrenn es (hehe, nicht das gehirn)

    und dann tu dies in dein gehirn:
    prae - vor - ++ steht vor dem i - es wird erhoeht (++), bevor der wert von i genommen wird
    post - nach - ++ steht nach dem i - es wird erhoeht, nachdem der wert von i genommen wurde[/QB][/QUOTE]

    Wieso ist das ignorant ? Ich mag es einfach nur nicht, aber ich akzeptiere das es da ist und ich weiss auch was Pre und Postfix ist
    Ich habe lediglich aus meiner Sicht geschildert warum ich i++ dem ++i bevorzuge, wie kann man damit so ein Problem haben ??
    /me handelt eben 'Keep it simple and stupid'.



  • Original erstellt von JoelH:
    Was bringt dir dieses kryptische Geschreibsel ?

    <offtopic>C wurde auf Minimalismus hin entwickelt. Damals hat ein Zeichen noch wesentlich Speicher gekostet, besonders wenn man Code irgendwie übers Netz übertragen wollte. Darum hat man überall an Zeichen gespart (Du könntest zum Beispiel das Leerzeichen zwischen 'Geschreibsel' und '?' sparen ;)).
    Aber es hindert dich niemand daran in C Pascal zu Programmieren. </>

    <troll>In C++ darf man, glaub ich, sowieso keine Schleife mehr verwenden, sondern man muss einen Funktor schreiben um dann mit for_each() drüberlaufen zu können. Das hat den Vorteil, dass Code, der logisch zusammengehört physisch getrennt wird. </>



  • Original erstellt von Daniel E.:
    <troll>In C++ darf man, glaub ich, sowieso keine Schleife mehr verwenden, sondern man muss einen Funktor schreiben um dann mit for_each() drüberlaufen zu können. Das hat den Vorteil, dass Code, der logisch zusammengehört physisch getrennt wird. </>

    außerdem darf ich an optimierungen erinern wie z.b. duff device, es ist aufjeden fall komfortabler ein Functor zu schreiben als duff und so jedesmal selbt von hand neu zu schreiben.



  • Original erstellt von Daniel E.:
    <offtopic>C wurde auf Minimalismus hin entwickelt.

    Das ist doch mal verständlich. Okay 😉 Aber hat eine Whileschleife nicht noch weniger Zeichen weil man sich die Initialisierung spart ? 😉



  • {init;while(cond){body;inc;}}
    gegen
    for(init;cond;inc){body;}

    ohne initialisierung;

    while(cond){body;inc;}
    for(;cond;inc){body;}

    immer noch leichter vorteil fuer for.



  • @Daniel E.
    Du wirst es aber doch noch schaffen einen Verweis auf das "saufende und bekiffte Standard comitee" in deinen <troll>-Abschnitt reinzubasteln, oder?
    Wenn schon Käule, dann doch bitte richtig.

    Achja, ich empfehle allen denjenigen die Algorithmen und Functors nicht gleich verbrennen wollen Scott Meyers: "Effective STL". Meyers' beschreibt dort in seiner gewohnt verständlichen Art und Weise wie, wann und wo man solche einsetzen sollte und wie, wo und wann simple Schleifen angebrachter sind.



  • Original erstellt von JoelH:
    Wieso ist das ignorant ? Ich mag es einfach nur nicht, aber ich akzeptiere das es da ist und ich weiss auch was Pre und Postfix ist
    Ich habe lediglich aus meiner Sicht geschildert warum ich i++ dem ++i bevorzuge, wie kann man damit so ein Problem haben ??
    /me handelt eben 'Keep it simple and stupid'.

    Kleiner Tipp: wenn dir ein Guru etwas erklaert, dann hoere auf ihn und lerne.

    Kaum jemand will verwirren indem er die Mittel nutzt, die einem die Sprache gibt. Warum kompliziert machen, wenn man es ganz leicht durch ein Sprachmittel einfacher machen kann.



  • Original erstellt von Shade Of Mine:
    **Kleiner Tipp: wenn dir ein Guru etwas erklaert, dann hoere auf ihn und lerne.
    **

    Ich halte wenig von Titeln. (Und ich nehme sowieso nix von niemandem an *grins*)

    Original erstellt von Shade Of Mine:
    **
    Kaum jemand will verwirren indem er die Mittel nutzt, die einem die Sprache gibt. Warum kompliziert machen, wenn man es ganz leicht durch ein Sprachmittel einfacher machen kann.**

    joo, ist schon klar, ist ja auch kein problem, ich meine den einzigsten vorteil den ++i gegenüber i++ hat ist einige zehntel Takt, warum soll ich dafür 15 Jahre Denkarbeit über den Jordan werfen ? Ich hab mir schon schwer genug getan als das Standardeingabegerät von Joystick nach Maus wechselte 😉



  • Original erstellt von JoelH:
    Ich halte wenig von Titeln. (Und ich nehme sowieso nix von niemandem an *grins*)

    Du solltest aber einem Guru zuhoeren.
    Wenn du das nicht tust, kann dir niemand helfen...

    joo, ist schon klar, ist ja auch kein problem, ich meine den einzigsten vorteil den ++i gegenüber i++ hat ist einige zehntel Takt, warum soll ich dafür 15 Jahre Denkarbeit über den Jordan werfen ? Ich hab mir schon schwer genug getan als das Standardeingabegerät von Joystick nach Maus wechselte 😉

    angenommen i ist eine instanz einer komplexen klasse - dann hast du ein problem... dann sinds keine zehntel takte sondern tausende!



  • Du hältst wenig von Titeln?
    Woher hast du denn dein C++ Wissen? Auch von irgendjemand anderen...

    Wie mein kleiner Bruder (er kann Deutsch, er ärgert mich nur...):

    Er: "Ich will Fernseher!"
    Ich: "Das heißt: 'Ich will fernsehen' oder 'Darf ich bitte fernsehen großer ehrwürdiger Bruder'"
    Er: "Nein"
    Ich: "Sag's richtig!"
    Er: "Ich sag's wie ich will!!!"
    Ich: "Dann wird dich keiner versteh'n!"
    Er: "Na und?"

    So läuft's hier auch ab 😃 :p 😉


Anmelden zum Antworten