Difference between revisions of "Operators/de"
m (Fixed syntax highlighting) |
|||
(20 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Operators}} | {{Operators}} | ||
+ | <br> | ||
+ | Zurück zu den [[Pascal basics/de|Pascal Grundlagen]].<br> | ||
<br> | <br> | ||
__TOC__ | __TOC__ | ||
<br> | <br> | ||
− | = | + | =FreePascal Operatoren= |
<br> | <br> | ||
==Adressoperator== | ==Adressoperator== | ||
Der Adressoperator @ gibt die Anfangsadresse einer Variablen, einer Prozedur oder einer Funktion zurück.<br> | Der Adressoperator @ gibt die Anfangsadresse einer Variablen, einer Prozedur oder einer Funktion zurück.<br> | ||
− | Ist der Compilerswitch {$T-} dann ist der | + | Ist der Compilerswitch {$T-}, dann ist der Rückgabewert ein untypisierter Pointer.<br> |
− | Ist der Compilerswitch {$T+} dann ist der | + | Ist der Compilerswitch {$T+}, dann ist der Rückgabewert ein typisierter Pointer.<br> |
Die Standardeinstellung für den Compiler ist {$T-}.<br> | Die Standardeinstellung für den Compiler ist {$T-}.<br> | ||
<br> | <br> | ||
+ | ==Zuweisungsoperator== | ||
+ | Der Zuweisungsoperator, weist einem Datenfeld einen Wert zu.<br> | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | a := b; | ||
+ | </syntaxhighlight> | ||
+ | |||
==Relationale Operatoren== | ==Relationale Operatoren== | ||
Folgende Operationen sind möglich: | Folgende Operationen sind möglich: | ||
# Ganzzahlige- und Fliesskommadatenfelder können auf beiden Seiten des Operators gemischt verwendet werden. | # 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. | # Short-, Ansi- und Widestringdatenfelder können auf beiden Seiten des Operators gemischt verwendet werden. | ||
− | = | + | <table> |
− | <> ungleich< | + | <tr> |
− | < | + | <td>=</td> |
− | > | + | <td>gleich</td> |
− | <= kleiner gleich< | + | </tr> |
− | >= grösser gleich< | + | <tr> |
− | in Prüft, ob das Element in einem Set des gleichen Datentyps vorkommt.< | + | <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> | ||
<br> | <br> | ||
+ | |||
==Binäre arithmetische Operatoren== | ==Binäre arithmetische Operatoren== | ||
− | + | + | <table> |
− | - | + | <tr> |
− | + | <td>+</td> | |
− | / Division< | + | <td>Addition</td> |
− | div Ganzzahldivision (Berechnet den ganzzahligen Wert davon, wie oft eine Ganzzahl in einer anderen Ganzzahl vorhanden ist.)< | + | </tr> |
− | mod Modulodivision (Berechnet den ganzzahligen Rest einer Division zweier Ganzzahlen.)< | + | <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> | ||
<br> | <br> | ||
+ | |||
==Unäre arithmetische Operatoren== | ==Unäre arithmetische Operatoren== | ||
+ legt als Vorzeichen fest, dass der Wert positiv ist<br> | + legt als Vorzeichen fest, dass der Wert positiv ist<br> | ||
- legt als Vorzeichen fest, dass der Wert negativ ist<br> | - legt als Vorzeichen fest, dass der Wert negativ ist<br> | ||
Beispiele: | Beispiele: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang="pascal"> |
a := +7; | a := +7; | ||
b := -3; | b := -3; | ||
Line 44: | Line 97: | ||
<tr> | <tr> | ||
<td>not</td> | <td>not</td> | ||
− | <td>Bitweise unäre | + | <td>Bitweise unäre Negation</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 77: | Line 130: | ||
<br> | <br> | ||
Beispiele: | Beispiele: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang="pascal"> |
− | A shr 1 // Entspricht Ganzzahl DIV 2 nur | + | A shr 1 // Entspricht Ganzzahl DIV 2 (nur dass es schneller geht) |
// (nur für ganzzahlige Datenfelder, das Ergebnis ist ganzzahlig abgerundet) | // (nur für ganzzahlige Datenfelder, das Ergebnis ist ganzzahlig abgerundet) | ||
Not 1 // Entspricht -2 | Not 1 // Entspricht -2 | ||
Not 0 // Entspricht -1 | Not 0 // Entspricht -1 | ||
Not -1 // Entspricht 0 | Not -1 // Entspricht 0 | ||
− | B shl 2 // Entspricht Ganzzahl * 4 nur | + | B shl 2 // Entspricht Ganzzahl * 4 (nur dass es schneller geht) |
− | // (nur für ganzzahlige Datenfelder, | + | // (nur für ganzzahlige Datenfelder, das Ergebnis ist ganzzahlig) |
1 or 2 // Entspricht 3 | 1 or 2 // Entspricht 3 | ||
3 xor 1 // Entspricht 2 | 3 xor 1 // Entspricht 2 | ||
Line 90: | Line 143: | ||
<br> | <br> | ||
− | == | + | ==Wahrheitsoperatoren== |
<table> | <table> | ||
<tr> | <tr> | ||
<td>not</td> | <td>not</td> | ||
− | <td>logische | + | <td>logische Negation (unary)</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 111: | Line 164: | ||
<br> | <br> | ||
− | ==String Operatoren== | + | ==String-Operatoren== |
+ Stringaddition (fügt zwei Strings zusammen)<br> | + Stringaddition (fügt zwei Strings zusammen)<br> | ||
<br> | <br> | ||
− | =Set Operatoren= | + | ==Set Operatoren== |
<table> | <table> | ||
<tr> | <tr> | ||
<td>+</td> | <td>+</td> | ||
− | <td>Vereinigungsmenge | + | <td>Vereinigungsmenge</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 138: | Line 191: | ||
<tr> | <tr> | ||
<td>include</td> | <td>include</td> | ||
− | <td>Ein | + | <td>Ein Element zum Set hinzufügen</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 150: | Line 203: | ||
</table> | </table> | ||
<br> | <br> | ||
− | = | + | |
+ | ==Klassenoperatoren== | ||
<table> | <table> | ||
<tr> | <tr> | ||
Line 161: | Line 215: | ||
</table> | </table> | ||
<br> | <br> | ||
+ | ==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= | =Die Priorität der Operatoren= | ||
Line 193: | Line 292: | ||
<br> | <br> | ||
<br> | <br> | ||
− | --[[User:Olaf|Olaf]] | + | --[[User:Olaf|Olaf]] 08:30, 4 November 2012 (UTC) |
− | [[Category: | + | [[Category:FreePascal/de]]{{AutoCategory}} |
Revision as of 12:55, 16 January 2020
│
Deutsch (de) │
English (en) │
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.
= | gleich |
<> | ungleich |
< | kleiner als |
> | grösser als |
<= | kleiner gleich |
<= | grösser gleich |
in | Prüft, ob das Element in einem Set des gleichen Datentyps vorkommt. |
Binäre arithmetische Operatoren
+ | Addition |
- | Subtraktion |
* | Multiplikation |
/ | Division |
div | Ganzzahldivision (Berechnet den ganzzahligen Wert davon, wie oft eine Ganzzahl in einer anderen Ganzzahl vorhanden ist.) |
mod | Modulodivision (Berechnet den ganzzahligen Rest einer Division zweier Ganzzahlen.) |
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
not | Bitweise unäre Negation |
and | Bitweises und |
or | Bitweises oder |
xor | Bitweises exclusives oder |
shl | Bitweises Shift (verschieben) nach links |
shr | Bitweises Shift (verschieben) nach rechts |
<< | Bitweises Shift (verschieben) nach links (Entspricht dem Operator shl) |
>> | Bitweises Shift (verschieben) nach rechts (Entspricht dem Operator shr) |
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
not | logische Negation (unary) |
and | logisches und |
or | logisches oder |
xor | logisches xor |
String-Operatoren
+ Stringaddition (fügt zwei Strings zusammen)
Set Operatoren
+ | Vereinigungsmenge |
- | Differenzmenge |
* | Schnittmenge |
>< | Symmetrische Differenz |
<= | Enthält |
include | Ein Element zum Set hinzufügen |
exclude | Ein Element im Set löschen |
in | Sieht nach, ob sich ein Element im Set befindet |
Klassenoperatoren
is | prüft, ob das Objekt von einer bestimmte Klasse ist |
as | führt eine bedingte Typumwandlung (bedingtes Typecasting) durch |
Zeiger-Operatoren
Operator | Operation | Operandtyp | Ergebnistyp | Beispiel |
+ | Zeigeraddition | Zeichenzeiger, Integer | Zeichenzeiger | P + I |
- | Zeigersubtraktion | Zeichenzeiger, Integer | Zeichenzeiger | P - Q |
^ | Zeiger-Dereferenzierung | Zeiger | Basistyp von Zeiger | P^ |
= | Gleich | Zeiger | Boolean | P = Q |
<> | Ungleich | Zeiger | Boolean | P <> Q |
Die Priorität der Operatoren
Für die Abarbeitung der Operatoren gibt es eine starre Reihenfolge.
Operator | Priorität | Kategorie |
Not, @ | erste (höchste) | Unäre Operatoren |
* / div mod and shl shr as << >> | zweite | Multiplizierende Operatoren |
+ - or xor | dritte | Addierende Operatoren |
< <> < > <= >= in is | vierte (niedrigste) | Relationale Operatoren |
--Olaf 08:30, 4 November 2012 (UTC)