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



  • @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 😉



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

    und der muss zwangsläufig einen titel haben ? In welcher Welt lebst du denn ?

    Original erstellt von Noesis:
    **
    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 ;)**

    Schon mal über lernen nachgedacht ? 'Ich will Fernseher' muss nicht 'Ich will fernsehen' heisen sondern kann auch 'Ich will einen Fernseher' bedeuten, von daher bist du eine äusserst bescheidene KI und deshalb nicht der Rede wert. Denn beleidigen kann ich auch und nichts anderes ist dieser Spruch mit dem nichtmehr zuhören !



  • Original erstellt von Daniel E.:
    <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

    Soweit ich weis verwendet man (auch heute noch) post-/pre- increment/decrement für die verschiedensten Arten der Addressierung in Assembler.



  • Original erstellt von JoelH:
    von daher bist du eine äusserst bescheidene KI und deshalb nicht der Rede wert. Denn beleidigen kann ich auch und nichts anderes ist dieser Spruch mit dem nichtmehr zuhören !

    Das können wir im NADRW weiterführen.
    Er meint fernsehen.



  • Original erstellt von Noesis:
    Er meint fernsehen.

    Na dann handele nach dem Prinzip 'Der klügere gibt nach'. Oder ist er klüger weil er nicht fernsieht, auch wenn das darauf zurück zu führen ist dass du ihn nicht lässt aber das interesiert morgen keinen mehr.


Anmelden zum Antworten