Plus

FreeBASIC-Referenz » Operatoren in FreeBASIC » Plus

Syntax A: Wert = Ausdruck1 + Ausdruck2
Syntax B: Ausdruck1 += Ausdruck2
Typ: Operatoren
Kategorie: mathematische Operatoren / Speicherverwaltung

Das Plus-Zeichen kann in FreeBASIC zur einfachen (Syntax A) und kombinierten (Syntax B) Addition eingesetzt werden. Syntax B ist eine Kurzform von

Ausdruck1 = Ausdruck1 + Ausdruck2

Je nach Datentyp der Ausdrücke bewirkt die Addition unterschiedliches. Zahlen werden wie gewohnt addiert, Strings werden aneinander gehängt. Außerdem gibt es auch die Möglichkeit, zu einem Pointer zu addieren.

Das Plus-Zeichen kann mithilfe von OPERATOR überladen werden.

Addition zweier Zahlen
In dieser Form eingesetzt, bewirkt das Plus die Addition zweier Argumente; der Rückgabewert ist die Summe der beiden Argumente. Die Argumente dürfen Zahlen, numerische Konstanten, numerische Variablen, und numerische Rückgabewerte von Funktionen sein. Addition ist die Gegenfunktion zu Subtraktion.

Beispiel:

DIM AS SINGLE n
n = 4.54 + 5.46
n += 7.5
PRINT n
SLEEP

Ausgabe:

17.5

Stringverkettung
Verkettet zwei Strings zu einem, in dem auf den Inhalt von String1 der von String2 folgt. Dieses Konstrukt funktioniert mit Strings, ZStrings und WStrings. Zur Stringverkettung kann auch das Zeichen & verwendet werden.

Beispiel:

DIM AS STRING a, c
a = "HELLO,"
a += " WORLD"
c = a + "!"
PRINT c
SLEEP

Ausgabe:

HELLO, WORLD!

Addition an Pointern
Addition an Pointern ermöglicht, die Adresse zu ändern, auf die ein Pointer zeigt. Der addierte Wert wird jedoch zuvor mit SIZEOF(Pointertyp) multipliziert. Dies vereinfacht dem Programmierer, sicherzustellen, dass seine Pointer auf sinnvolle Adressen zeigen.

Beispiel:

DIM a(10) AS INTEGER
DIM pa AS INTEGER PTR
DIM i AS INTEGER

' Das Array mit Werten von 0 bis 10 befüllen
FOR i = 0 TO 10
   a(i) = i
NEXT

' Einen Pointer auf den Beginn des Arrays setzen
pa = @a(0)

FOR i = 0 TO 10
   ' Den Wert ausgeben, auf den der Pointer gerade zeigt:
   PRINT *pa;
   ' den Pointer um eine INTEGER-Stelle verschieben:
   pa += 1
NEXT
SLEEP

Ausgabe:

0 1 2 3 4 5 6 7 8 9 10

Erläuterung: Mit jeder Zeile

pa += 1

wird zum Wert von 'pa' tatsächlich 4 addiert, denn 4=1*SIZEOF(INTEGER). Würden wir hier einen SHORT-Pointer (und dazu sinnvollerweise ein SHORT-Array) verwenden, würde sich der Wert um 2 verschieben.

Unterschiede zu QB:

Unterschiede zu früheren FreeBASIC-Versionen:
Bei der Addition an Pointern wird die automatische Multiplikation erst seit v0.14 durchgeführt; davor musste der Programmierer selbst sicherstellen, dass Pointer weit genug verschoben wurden.

Siehe auch:
mathematische Funktionen, Und (et-Ligatur), Pointer