Operators
From Lazarus wiki
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
│ Deutsch (de) │ English (en) │
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 a
Relational 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 2
Truth 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 |