Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - Minus

Referenz-Navigation

 

Syntax A: Wert = Ausdruck1 - Ausdruck2
Syntax B: Ausdruck1 -= Ausdruck2
Syntax C: Wert = -Ausdruck2
Typ: Operator
Kategorie: Operatoren

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 BefehlsreferenzeintragOPERATOR ü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. Die Subtraktion ist die Gegenfunktion zur BefehlsreferenzeintragAddition.

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 BefehlsreferenzeintragSIZEOF(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 Versionen von FreeBASIC:
Seit FreeBASIC v0.14 wird bei der Subtraktion an Pointern automatisch die Multiplikation mit der Größe des Pointertyps durchgeführt. Davor musste der Programmierer selbst sicherstellen, dass Pointer weit genug verschoben wurden.

Siehe auch:
BefehlsreferenzeintragPointer, Befehlsreferenzeintragmathematische Funktionen


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 06.08.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 05.01.2013 von Redakteurnemored gespeichert.
  Versionen Versionen