Revision 1 of 2, by Slawek on 5-2-2021. The page as it is now.
Operators/de
Zurück zu den Pascal Grundlagen.
=FreePascal Operatoren=
==Adressoperator== Der Adressoperator @ gibt die Anfangsadresse einer Variablen, einer Prozedur oder einer Funktion zurück.
Ist der Compilerswitch {$T-}, dann ist der Rückgabewert ein untypisierter Pointer.
Ist der Compilerswitch {$T+}, dann ist der Rückgabewert ein typisierter Pointer.
Die Standardeinstellung für den Compiler ist {$T-}.
==Zuweisungsoperator== Der Zuweisungsoperator, weist einem Datenfeld einen Wert zu.\
a := b;Relationale Operatoren
Folgende Operationen sind möglich:
- Ganzzahlige- und Fliesskommadatenfelder können auf beiden Seiten des Operators gemischt verwendet werden.
- Short-, Ansi- und Widestringdatenfelder können auf beiden Seiten des Operators gemischt verwendet werden.
<table>
<tr>
<td>
=
</td>
<td>
gleich
</td>
</tr>
<tr>
<td>
<>
</td>
<td>
ungleich
</td>
</tr>
<tr>
<td>
<
</td>
<td>
kleiner als
</td>
</tr>
<tr>
<td>
>
</td>
<td>
grösser als
</td>
</tr>
<tr>
<td>
<=
</td>
<td>
kleiner gleich
</td>
</tr>
<tr>
<td>
>=
</td>
<td>
grösser gleich
</td>
</tr>
<tr>
<td>
in
</td>
<td>
Prüft, ob das Element in einem Set des gleichen Datentyps vorkommt.
</td>
</tr>
</table>
\
Binäre arithmetische Operatoren
<table>
<tr>
<td>
+
</td>
<td>
Addition
</td>
</tr>
<tr>
<td>
-
</td>
<td>
Subtraktion
</td>
</tr>
<tr>
<td>
*
</td>
<td>
Multiplikation
</td>
</tr>
<tr>
<td>
/
</td>
<td>
Division
</td>
</tr>
<tr>
<td>
div
</td>
<td>
Ganzzahldivision (Berechnet den ganzzahligen Wert davon, wie oft eine Ganzzahl in einer anderen Ganzzahl vorhanden ist.)
</td>
</tr>
<tr>
<td>
mod
</td>
<td>
Modulodivision (Berechnet den ganzzahligen Rest einer Division zweier Ganzzahlen.)
</td>
</tr>
</table>
\
Unäre arithmetische Operatoren
+ legt als Vorzeichen fest, dass der Wert positiv ist
- legt als Vorzeichen fest, dass der Wert negativ ist
Beispiele:
a := +7;
b := -3;
==Logische Operatoren==
<table>
<tr>
<td>
not
</td>
<td>
Bitweise unäre Negation
</td>
</tr>
<tr>
<td>
and
</td>
<td>
Bitweises und
</td>
</tr>
<tr>
<td>
or
</td>
<td>
Bitweises oder
</td>
</tr>
<tr>
<td>
xor
</td>
<td>
Bitweises exclusives oder
</td>
</tr>
<tr>
<td>
shl
</td>
<td>
Bitweises Shift (verschieben) nach links
</td>
</tr>
<tr>
<td>
shr
</td>
<td>
Bitweises Shift (verschieben) nach rechts
</td>
</tr>
<tr>
<td>
<<
</td>
<td>
Bitweises Shift (verschieben) nach links (Entspricht dem Operator shl)
</td>
</tr>
<tr>
<td>
>>
</td>
<td>
Bitweises Shift (verschieben) nach rechts (Entspricht dem Operator shr)
</td>
</tr>
</table>
Beispiele:
A shr 1 // Entspricht Ganzzahl DIV 2 (nur dass es schneller geht)
// (nur für ganzzahlige Datenfelder, das Ergebnis ist ganzzahlig abgerundet)
Not 1 // Entspricht -2
Not 0 // Entspricht -1
Not -1 // Entspricht 0
B shl 2 // Entspricht Ganzzahl * 4 (nur dass es schneller geht)
// (nur für ganzzahlige Datenfelder, das Ergebnis ist ganzzahlig)
1 or 2 // Entspricht 3
3 xor 1 // Entspricht 2\
Wahrheitsoperatoren
<table>
<tr>
<td>
not
</td>
<td>
logische Negation (unary)
</td>
</tr>
<tr>
<td>
and
</td>
<td>
logisches und
</td>
</tr>
<tr>
<td>
or
</td>
<td>
logisches oder
</td>
</tr>
<tr>
<td>
xor
</td>
<td>
logisches xor
</td>
</tr>
</table>
\
String-Operatoren
+ Stringaddition (fügt zwei Strings zusammen)
==Set Operatoren==
<table>
<tr>
<td>
+
</td>
<td>
Vereinigungsmenge
</td>
</tr>
<tr>
<td>
-
</td>
<td>
Differenzmenge
</td>
</tr>
<tr>
<td>
*
</td>
<td>
Schnittmenge
</td>
</tr>
<tr>
<td>
><
</td>
<td>
Symmetrische Differenz
</td>
</tr>
<tr>
<td>
<=
</td>
<td>
Enthält
</td>
</tr>
<tr>
<td>
include
</td>
<td>
Ein Element zum Set hinzufügen
</td>
</tr>
<tr>
<td>
exclude
</td>
<td>
Ein Element im Set löschen
</td>
</tr>
<tr>
<td>
in
</td>
<td>
Sieht nach, ob sich ein Element im Set befindet
</td>
</tr>
</table>
\
Klassenoperatoren
<table>
<tr>
<td>
is
</td>
<td>
prüft, ob das Objekt von einer bestimmte Klasse ist
</td>
</tr>
<tr>
<td>
as
</td>
<td>
führt eine bedingte Typumwandlung (bedingtes Typecasting) durch
</td>
</table>
==Zeiger-Operatoren==
<table>
<tr>
<td>
Operator
</td>
<td>
Operation
</td>
<td>
Operandtyp
</td>
<td>
Ergebnistyp
</td>
<td>
Beispiel
</td>
</tr>
<tr>
<td>
+
</td>
<td>
Zeigeraddition
</td>
<td>
Zeichenzeiger, Integer
</td>
<td>
Zeichenzeiger
</td>
<td>
P + I
</td>
</tr>
<tr>
<td>
-
</td>
<td>
Zeigersubtraktion
</td>
<td>
Zeichenzeiger, Integer
</td>
<td>
Zeichenzeiger
</td>
<td>
P - Q
</td>
</tr>
<tr>
<td>
^
</td>
<td>
Zeiger-Dereferenzierung
</td>
<td>
Zeiger
</td>
<td>
Basistyp von Zeiger
</td>
<td>
P^
</td>
</tr>
<tr>
<td>
=
</td>
<td>
Gleich
</td>
<td>
Zeiger
</td>
<td>
Boolean
</td>
<td>
P = Q
</td>
</tr>
<tr>
<td>
<>
</td>
<td>
Ungleich
</td>
<td>
Zeiger
</td>
<td>
Boolean
</td>
<td>
P <> Q
</td>
</tr>
</table>
Die Priorität der Operatoren
Für die Abarbeitung der Operatoren gibt es eine starre Reihenfolge.\
<table>
<tr>
<td>
Operator
</td>
<td>
Priorität
</td>
<td>
Kategorie
</td>
</tr>
<tr>
<td>
Not, @
</td>
<td>
erste (höchste)
</td>
<td>
Unäre Operatoren
</td>
</tr>
<tr>
<td>
- / div mod and shl shr as << >>
</td>
<td>
zweite
</td>
<td>
Multiplizierende Operatoren
</td>
</tr>
<tr>
<td>
+ - or xor
</td>
<td>
dritte
</td>
<td>
Addierende Operatoren
</td>
</tr>
<tr>
<td>
< <> < > <= >= in is
</td>
<td>
vierte (niedrigste)
</td>
<td>
Relationale Operatoren
</td>
</tr>
</table>
--Olaf 08:30, 4 November 2012 (UTC)
From the Free Pascal wiki, page "Operators/de", as it stood on 2021-05-02 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
