Minus

FreeBASIC-Referenz » Operatoren in FreeBASIC » Minus

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

Das Minus-Zeichen kann in FreeBASIC zur Subtraktion (Syntax A und B) und zur Negation (Syntax C) eingesetzt werden. Bei Syntax B handelt es sich um eine kombinierte Subtraktion; dies ist die Kurzform für

Ausdruck1 = Ausdruck1 - Ausdruck2

Sowohl die Subtraktion als auch die Negation kann mithilfe von OPERATOR überladen werden.

Subtraktion zweier Zahlen
Wert = Ausdruck1 - Ausdruck2
Ausdruck1 -= Ausdruck2
In dieser Form eingesetzt bewirkt das Minus die Subtraktion zweier Argumente; der Rückgabewert ist die Differenz der beiden Argumente. Die Argumente dürfen Zahlen, numerische Konstanten, numerische Variablen, und numerische Rückgabewerte von Funktionen sein. Subtraktion ist die Gegenfunktion zu Addition.

Beispiel:

DIM AS BYTE n
n = 120 - 119
n -= 10
PRINT n
SLEEP

Ausgabe:

-9

Subtraktion an Pointern
neuerPointer = alterPointer - Wert
Pointer -= Wert
Subtraktion an Pointern ermöglicht, die Adresse zu ändern, auf die ein Pointer zeigt. Der subtrahierte 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

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

' Einen Pointer auf das Ende des Arrays setzen
pa = @a(10)

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

Ausgabe:

10 9 8 7 6 5 4 3 2 1 0

Erläuterung: Mit jeder Zeile

pa -= 1

wird vom Wert von 'pa' tatsächlich 4 subtrahiert, 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.

Negation
Wert = -Ausdruck
Dieser Operator gibt den negativen Wert des Arguments zurück, ändert also das Vorzeichen. 'Ausdruck' kann eine Zahl, eine numerische Konstante, eine numerische Variable oder ein numerischer Rückgabewert einer Funktionen sein.

Beispiel:

DIM n AS LONGINT
PRINT -5
n = 65432568459
n = -n
PRINT n
SLEEP

Ausgabe:

-5
-65432568459

Unterschiede zu QB:

Unterschiede zu früheren FreeBASIC-Versionen:
Bei der Subtraktion 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, Pointer