Kapitel 3: Einfache Operatoren / 3.3 Arithmetische Operatoren / 3.3.3 Inkrement- und Dekrement-Operatoren

Wie viele andere Sprachen auch, verfügt Swift über zwei Inkrement– (a++ und ++a) und zwei Dekrement-Operatoren (a-- und --a).

Diese vier Operatoren sind auf alle Zahlentypen anwendbar. Dabei erhöhen die beiden Inkrement-Operatoren den Wert der verwendeten Variable um 1, während die beiden Dekrement-Operatoren ihn um 1 verringern.

a++ und ++a sind also eine Kurzschreibweise für a = a + 1, so wie a-- bzw. --a eine Kurzschreibweise für a = a – 1 sind.

Ob die beiden Operatorzeichen nun vor dem Operanden stehen (Präfixoperator) oder dahinter (Postfixoperator) hat keinen Einfluss darauf, wie der Operand verändert wird: Bei zwei Pluszeichen wird er immer um eins erhöht, bei zwei Minuszeichen immer um eins verringert.

Die vier Operatoren haben aber auch einen Rückgabewert: Werden die beiden Operatorzeichen als Präfix verwendet (++a bzw. --a), dann wird zuerst der Variablenwert erhöht bzw. abgesenkt, erst dann wird der Variablenwert zurückgegeben. Werden sie als Postfix verwendet (a++ bzw. a--), dann ist es umgekehrt: Es wird zuerst der Variablenwert zurückgegeben und erst dann wird der Variablenwert verändert.

Ein Beispiel:

var a = 13      // a wird auf 13 gesetzt
var b = a++     // b wird auf 13 gesetzt und dann a auf 14 erhöht
var c = --b     // b wird auf 12 verringert, dann c auf 12 gesetzt

Wenn Sie den Rückgabewert nicht benötigen, lassen Sie ihn einfach ins Leere laufen und verwenden Sie nur die wertverändernde Eigenschaft, z.B. in dem Sie a++ ohne eine Zuweisung als einzigen Befehl in einer Zeile verwenden.

Apple empfiehlt, das Postfix nur dann zu verwenden, wenn man es explizit braucht. Wenn es egal ist, solle man das Präfix verwenden, da dessen Verhalten (der verminderte oder erhöhte Wert wird zurückgegeben) eher den Erwartungen eines Programmierers entspräche.

Meine Erfahrungen sagen etwas anderes: Die meisten Programmierer verwenden a++ viel häufiger als die anderen drei Operatoren, danach kommt a--. Die beiden Präfix-Varianten folgen mit einer weit geringeren Häufigkeit und werden von den meisten nur dann genutzt, wenn sie explizit benötigt werden, also genau entgegengesetzt zu Apples Empfehlung.

Das liegt wahrscheinlich daran, dass der Name der Computersprache C++ vielen Programmierern so geläufig ist, dass sie ihn im Programmcode unbewusst oder absichtlich zitieren.

Ein kleiner Exkurs: C++ wurde von Bjarne Stroustrup erfunden und der nannte die neue Sprache zunächst „C mit Klassen“, denn C++ war eben C erweitert um Klassen. Sein Mitarbeiter Rick Mascitti kam dann auf die Idee, die Sprache C++ zu nennen: Die Sprache C erhöht um 1, Eins mehr als C, Nachfolger von C. Das verfing und geht also tatsächlich auf das Inkrement-Postfix zurück.

Detailverliebte und C++ wohlmeinende Leute haben später betont, dass die Verwendung des Postfix suggerieren würde, dass die Neuerungen nicht verwendet werden könnten, da sie erst nach der Benutzung hinzukämen. Richtiger, so sagten sie, wäre die Bezeichnung ++C. Es antworteten ihnen Leute, die C++ nicht so wohlmeinend gegenüberstanden: Nein, nein, sagten diese, die Bezeichnung sei absolut korrekt, aus genau den Gründen.

Beitragsbild: Martinet noir Apus apus Common Swift von Sébastien Bertru in abgewandelter Form (CC BY-SA 2.0)

Kapitel 3.3.3: Inkrement- und Dekrement-Operatoren

Ein Gedanke zu „Kapitel 3.3.3: Inkrement- und Dekrement-Operatoren

  • 14. Juli 2015 um 9:56
    Permalink

    Hallo Markus,
    vor Kurzem hatte ich Deinen Kurs entdeckt.
    Der entstandene Aktualisierungsaufwand wegen Swift 2.0 ist sicher zu bewältigen.
    Swift auf Deutsch mit Deinem Hintergrundwissen darzustellen, ist ein gutes Konzept.
    freundliche Grüße, Ulf

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.