Michael C.: variable++ oder ++variable ?

Guten Tag Forum.

Man kennt ja bei vielen Programmiersprachen die Möglichkeit eine Variable zu pre- bzw. zu postinkremieren (hoffe man kann das so sagen)... Aber wo ist da nun der Unterschied? Sicher, der jeweilige Compiler bzw. Interpreter wird sicherlich intern unterschieldich vorgehen, aber das Resultat bleibt doch das selbe, oder irr ich mich da? Jedenfalls hab ich bisher keinerlei Unterschied bemerken können.
Drum nun meine Frage, kann den Unterschied eventuell jemand anhand eines kleinen Code-Beispiels (in Perl, C oder PHP) mir darlegen? ...Danke schonmal im Voraus und einen angenehmen Tag.

-Michael-

  1. Hi,

    der unterschied wird nur bei Zuweisungen deutlich.

    i = 0
    var a = ++i;

    --> a == 1; i == 1;

    i = 0;
    var a = i++;
    --> a == 0; i == 1;

    Scooter

    1. Tag,

      man kann es auch anhand von Array-Elementen beschreiben (nur als Ergänzung zu deinem Beispiel):
      var a = ['a', 'b', 'c', 'd'];
      var i = 1;
      var mychar1 = a[++i]; // mychar1 = 'b'
      var mychar2 = a[i++]; // mychar2 = 'a'

      MfG
      Rouven

      --

      -------------------
      ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
      1. Hallo,

        var a = ['a', 'b', 'c', 'd'];
        var i = 1;
        var mychar1 = a[++i]; // mychar1 = 'b'
        var mychar2 = a[i++]; // mychar2 = 'a'

        Wobei dein mychar2 jetzt aber auch 'b' ist, da i ja nach der Zuweisung auf mychar1 auf 2 gesetzt wurde. (Ist schon ok, ich weiß wie du es gemeint hattest.)

        Viele Grüße,

        Stefan

        --
        Lass dir das Tanzen NICHT verbieten
        http://tanzverbot.de
        1. Verdammt! Das ist schon die zweite Unzulänglichkeit meinerseits am heutigen Tage.
          Ich muss mehr schlafen...

          MfG
          Rouven

          --

          -------------------
          ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
        2. Hallo,

          var a = ['a', 'b', 'c', 'd'];
          var i = 1;
          var mychar1 = a[++i]; // mychar1 = 'b'
          var mychar2 = a[i++]; // mychar2 = 'a'

          Wobei dein mychar2 jetzt aber auch 'b' ist, da i ja nach der Zuweisung auf mychar1 auf 2 gesetzt wurde. (Ist schon ok, ich weiß wie du es gemeint hattest.)

          Viele Grüße,

          Stefan

          Hi,

          noch ein Fehler:
          i muss mit 0 initilisiert werden, damit es stimmt, wenn man von dem anderen Fehler absieht.

          Scooter

          1. Hallo

            noch ein Fehler:
            i muss mit 0 initilisiert werden, damit es stimmt, wenn man von dem anderen Fehler absieht.

            ...heut ist nicht mein Tag. Wieder mal zu lange in Basic/VBScript programmiert...

            MfG
            Rouven

            --

            -------------------
            ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
  2. Hallo Michael,

    Drum nun meine Frage, kann den Unterschied eventuell jemand anhand eines kleinen Code-Beispiels (in Perl, C oder PHP) mir darlegen?

    http://www.php.net/language.operators.increment sollte helfen.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|