Operators
Deutsch · English
Free Pascal operators
Address operator
The address operator @ returns the start address of a variable, a procedure or a function. If the compiler switch is {$ T-}, the return value is an untyped pointer. If the compiler switch is {$ T +}, the return value is a typed pointer. The default setting for the compiler is {$ T-}.
Assignment operator
The assignment operator assigns a value to a data field.
a := b; // b is assigned to aRelational operators
The following operations are possible:
- Integer and floating point data fields can be mixed on both sides of the operator.
- Short, ANSI and Widestring data fields can be mixed on both sides of the operator.
| Operator | Meaning |
|---|---|
| = | equal |
| <> | not equal |
| < | less than |
| > | greater than |
| <= | less than or equal |
| >= | greater or equal |
| in | checks whether the element appears in a set of the same data type |
Binary arithmetic operators
| Operator | Meaning |
|---|---|
| + | addition |
| - | subtraction |
| * | multiplication |
| / | division |
| div | integer division (Calculates the integer value of how many times an integer is in another integer.) |
| mod | modulo division (Computes the integer remainder of a division of two integers.) |
Unary arithmetic operators
+ specifies that the value is positive
- specifies that the value is negative
Examples:
a := +7;
b := -3;Logical operators
| Operator | Operation |
|---|---|
| not | Bitwise unary negation |
| and | Bitwise and |
| or | Bitwise or |
| xor | Bitwise exclusive or |
| shl | Bitwise shift to the left |
| shr | Bitwise shift to the right |
| << | Bitwise shift to the left (corresponds with the operator shl) |
| >> | Bitwise shift to the right (corresponds with the operator shr) |
Examples:
A shr 1 // corresponds to integer DIV 2 (only that it is faster)
// (only for integer data fields, the result is rounded down to an integer)
Not 1 // corresponds to -2
Not 0 // corresponds to -1
Not -1 // corresponds to 0
B shl 2 // corresponds to integer * 4 (only that it is faster)
// (only for integer data fields, the result is an integer)
1 or 2 // corresponds to 3
3 xor 1 // corresponds to 2Truth operators
| Operator | Operation |
|---|---|
| not | logical negation (unary) |
| and | logical and |
| or | logical or |
| xor | logical xor |
String operators
| Operator | Operation |
|---|---|
| + | String concatenation (joins two strings together) |
Set operators
| Operator | Operation |
|---|---|
| + | union |
| - | difference set |
| * | intersection |
| >< | symmetrical difference |
| <= | contains |
| include | add an item to the set |
| exclude | delete an item in the set |
| in | checks if the item is in the set |
Class Operators
| Operator | Operation |
|---|---|
| is | checks whether the object is of a certain class |
| as | performs a conditional type cast (conditional typecasting) |
Pointer Operators
| Operator | Operation | Operand type | Result type | Example |
|---|---|---|---|---|
| + | pointer addition | character pointer, integer | character pointer | P + I |
| - | pointer subtraction | character pointer, integer | character pointer | P - Q |
| ^ | pointer dereference | pointer | basic type of pointer | P^ |
| = | equal | pointer | boolean || P = Q | |
| <> | not equal | pointer | boolean | P <> Q |
The priority of the operators
There is a rigid sequence for processing the operators.
| Operators | Priority | Category |
|---|---|---|
| Not @ | first (highest) | Unary operators |
| * / div mod and shl shr as << >> | second | Multiplication operators |
| + - or xor | third | Addition operators |
| = <> < > <= >= in is | fourth (lowest) | Relational operators |
See also
From the Free Pascal wiki, page "Operators", as it stood on 2022-01-17 after a change by Alextp, 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.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
