Difference between revisions of "Operators/de"

From Lazarus wiki
Jump to navigationJump to search
 
(24 intermediate revisions by 3 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>
=Die FreePascal Operatoren=
+
=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 Rückgabewerte ein untypisierter Pointer.<br>
+
Ist der Compilerswitch {$T-}, dann ist der Rückgabewert ein untypisierter Pointer.<br>
Ist der Compilerswitch {$T+} dann ist der Rückgabewerte ein typisierter Pointer.<br>
+
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.
= gleich<br>
+
<table>
<> ungleich<br>
+
  <tr>
< kleiner als<br>
+
    <td>=</td>
> grösser als<br>
+
    <td>gleich</td>
<= kleiner gleich<br>
+
  </tr>
>= grösser gleich<br>
+
  <tr>
in Prüft, ob das Element in einem Set des gleichen Datentyps vorkommt.<br>
+
    <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==
Addition<br>
+
<table>
Subtraktion<br>
+
  <tr>
[[*]]  Multiplikation<br>
+
    <td>+</td>
/  Division<br>
+
    <td>Addition</td>
div Ganzzahldivision (Berechnet den ganzzahligen Wert davon, wie oft eine Ganzzahl in einer anderen Ganzzahl vorhanden ist.)<br>
+
  </tr>
mod Modulodivision (Berechnet den ganzzahligen Rest einer Division zweier Ganzzahlen.)<br>
+
   <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 41: Line 94:
 
<br>
 
<br>
 
==Logische Operatoren==
 
==Logische Operatoren==
not Bitweise unäre negation<br>
+
<table>
and Bitweises und<br>
+
  <tr>
or Bitweises oder<br>
+
    <td>not</td>
xor Bitweises exclusives oder<br>
+
    <td>Bitweise unäre Negation</td>
shl Bitweises Shift (verschieben) nach links<br>
+
  </tr>
shr Bitweises Shift (verschieben) nach rechts<br>
+
  <tr>
<< Bitweises Shift (verschieben) nach links (Entspricht dem Operator shl)<br>
+
    <td>and</td>
>> Bitweises Shift (verschieben) nach rechts (Entspricht dem Operator shr)<br>
+
    <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>
 
<br>
 
<br>
 
Beispiele:
 
Beispiele:
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
A shr 1  // Entspricht Ganzzahl DIV 2 nur das es schneller geht
+
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 das es schneller geht
+
B shl 2  // Entspricht Ganzzahl * 4 (nur dass es schneller geht)
         // (nur für ganzzahlige Datenfelder, das Ergebnis ist ganzzahlig)
+
         // (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
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br>
 
<br>
==Wahrheits Operatoren==
+
 
not logische negation (unary)<br>
+
==Wahrheitsoperatoren==
and logisches und<br>
+
<table>
or logisches oder<br>
+
  <tr>
xor logisches xor<br>
+
    <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>
 
<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>
+
     <td>Vereinigungsmenge</td>
 
   </tr>
 
   </tr>
 
   <tr>
 
   <tr>
Line 96: Line 191:
 
   <tr>
 
   <tr>
 
     <td>include</td>
 
     <td>include</td>
     <td>Ein Elememt zum Set hinzufügen</td>
+
     <td>Ein Element zum Set hinzufügen</td>
 
   </tr>
 
   </tr>
 
   <tr>
 
   <tr>
Line 108: Line 203:
 
</table>
 
</table>
 
<br>
 
<br>
=Klassen Operatoren=
+
 
is prüft, ob das Objekt von einer bestimmte Klasse ist<br>
+
==Klassenoperatoren==
as führte eine bedingte Typumwandlung (bedingtes Typecasting) durch<br>
+
<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>
 
<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 144: Line 292:
 
<br>
 
<br>
 
<br>
 
<br>
--[[User:Olaf|Olaf]] 17:09, 11 October 2012 (UTC)
+
--[[User:Olaf|Olaf]] 08:30, 4 November 2012 (UTC)
[[Category:Pascal]]
+
[[Category:FreePascal/de]]{{AutoCategory}}

Latest revision as of 20:01, 2 May 2021

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:

  1. Ganzzahlige- und Fliesskommadatenfelder können auf beiden Seiten des Operators gemischt verwendet werden.
  2. 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)