c_anfänger: Unterschied: ++i und i++

Hallo Forum,

ich probiere mich gerade in der C-Programmierung:
was war nochmal der Unterschied zwischen i++ und ++i?
Könntet Ihr mir ein Beispiel für die unterschiedliche
Arbeitsweise geben?
Gibts das auch in anderen Sprachen (Perl, PHP)? Gibt es
Unterschiede?

Vielen Dank

der C-Anfänger

  1. Hallo,

    ich probiere mich gerade in der C-Programmierung:
    was war nochmal der Unterschied zwischen i++ und ++i?

    ++i = Praeinkrement (erst erhoehen und dann naechsten Schritt vollziehen)
    i++ = (erst naechsten Schritt vollziehen und dann erhoehen)

    Könntet Ihr mir ein Beispiel für die unterschiedliche
    Arbeitsweise geben?

    Hier mal in JavaScript gezeigt:

    var i;

    i=0;
    alert(++i); // 1

    i=0;
    alert(i++); // 0
    alert(i);   // 1

    Bei dieser Formulierung wird vor der Ausgabe jeweils um 1 erhoeht:

    i=0;
    ++i; // oder i++;
    alert(i);   // 1

    Gibts das auch in anderen Sprachen (Perl, PHP)?

    Gibt es

    Unterschiede?

    Scriptsprachen mit solchen "C-like"-Implemetierungen machen da AFAIK keinen Unterschied.

    MfG, Thomas

  2. Holladiewaldfee,

    Ganz einfach: ++i erhöht die Variable vor der Ausgabe, i++ danach.

    Also:
    i=0;
    echo i++; # 0
    echo i;   # 1
    echo ++i; # 2

    Ciao,

    Harry

    --
      Hä? Was? Signatur?! Kann man das essen?
  3. Hi du Anfänger :-)

    i++ ist Postkrement ++i Prekrement, ein Beispiel das sich selbst erklärt:

    foo = feld[i++];

    entspricht

    foo = feld[i];
    i=i+1;

    dagegen

    foo = feld[++i]

    entspricht:

    i=i+1;
    foo = feld[i];

    alles klar ? Gibt es auch in anderen Sprachen.

    Gruss

    Marko

  4. Hallo C-Anfänger,

    was war nochmal der Unterschied zwischen i++ und ++i?
    Könntet Ihr mir ein Beispiel für die unterschiedliche
    Arbeitsweise geben?

    ---------------------------------------
    #include <stdio.h>

    int main (int argc, char **argv) {
      int a, b, i;

    i = 0;
      a = ++i;
      b = i++;

    printf ("%d %d %d\n", i, a, b);

    return 0;
    }
    ---------------------------------------

    Das Ergebnis musst Du Dir schon selbst ausgeben lassen. ;-)

    Gibts das auch in anderen Sprachen (Perl, PHP)?

    In diesen beiden: ja, und es gibt keine Unterschiede zu C.

    http://de3.php.net/manual/de/language.operators.increment.php
    http://selfhtml.teamone.de/cgiperl/sprache/operatoren.htm#berechnung

    Christian

    --
    Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
  5. Hallo Christian, Marko, Harry und Thomas

    vielen Dank für Eure Antworten!

    Haben mir sehr geholfen

    Viele Grüße
    der C-Anfänger

  6. ...habe da noch eine Frage:

    Lerne mit Hilfe des Buches "Programmiern in C" von Kermit und Richtie.
    Da gibts es eine Aufgabe "Schreiben Sie ein Programm, das ein Histogramm
    der Längen der eingegebenen Wörter ausgibt".

    Was ist ein Histogramm???

    Gruss vom c_anfänger

    ps: ich weiss, dass der Kerl nicht Kermit heiss, kann mir
    aber die Schreibweise des richtigen Namen nicht merken :)

    1. Hallo C_Anfänger,

      Was ist ein Histogramm???

      Eine Art Balkendiagramm. In vielen Graphikprogrammen findest Du auch eine Histogrammfunktion zu den Farben, die in einem Bild vorkommen. Das Programm könnte z.B. so ein Ergebnis produzieren:

      Länge    Anzahl
      der      der
      Wörter   Wörter

      1                                                          (0)
      2        #######                                           (7)
      3        ###############################                  (31)
      4        ###############                                  (15)
      ...

      Natürlich müßtest Du die Länge der Balken auf die Bildschirmbreite begrenzen und dann halt alle im gleichen Verhältnis teilen.

      ps: ich weiss, dass der Kerl nicht Kermit heiss, kann mir
      aber die Schreibweise des richtigen Namen nicht merken :)

      Also bitte, was ist so schwer daran, sich Kernighan und Ritchie zu merken? *scnr*

      Christian

      --
      Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.