|
Onetastic Macro Documentation >
>
Operators
Operators
Macro expressions can contain several different operators. They can be used for assignments, comparisons, arithmetic or logical operations and string concatenations. Following is a list of all the operators. Operators can be operating on one (unary), two (binary) or three (ternary) sub expressions:
Arithmetic Operators
| Operator | Name | Type |
+ | Addition | binary |
- | Subtraction | binary |
* | Multiplication | binary |
/ | Division | binary |
% | Modulo | binary |
- | Unary Minus | unary |
+ | Unary Plus | unary |
Increment/Decrement Operators
| Operator | Name | Type |
++$v | Pre-Increment | unary |
--$v | Pre-Decrement | unary |
$v++ | Post-Increment | unary |
$v-- | Post-Decrement | unary |
Assignment Operators
| Operator | Name | Type |
= | Assignment | binary |
+= | Addition Assignment | binary |
-= | Subtraction Assignment | binary |
*= | Multiplication Assignment | binary |
/= | Division Assignment | binary |
%= | Modulo Assignment | binary |
&&= | Logical And Assignment | binary |
||= | Logical Or Assignment | binary |
&= | Concatenation Assignment | binary |
Comparison Operators
| Operator | Name | Type |
== | Equals | binary |
!= | Not Equals | binary |
> | Greater Than | binary |
>= | Greater Than or Equals | binary |
Logical Operators
| Operator | Name | Type |
&& | Logical And | binary |
|| | Logical Or | binary |
! | Logical Not | unary |
String Concatenation Operator
| Operator | Name | Type |
& | Concatenation | binary |
Ternary Operator
| Operator | Name | Type |
?: | Ternary Operator | ternary |
Operator Precedence
In macro expressions, following operator precedence rules apply. The order of operations can be changed by providing parantheses.
| Precedence | Category | Operators |
| 1 | Increment/Decrement | ++, -- |
| 2 | Unary | !, -, + |
| 3 | Product | *, /, % |
| 4 | Sum & Concatenation | +, -, & |
| 5 | Comparison | ==, !=, <, <=, >, >= |
| 6 | Logical And | && |
| 7 | Logical Or | || |
| 8 | Ternary | ?: |
| 9 | Assignment | =, +=, -=, *=, /=, %=, &&=, ||=, &= |
Note: Assignments are evaluated right to left
|