Expressions

An expression is an arithmetical operation that delivers a result, which can then be assigned to a variable or object parameter. The arithmetic expression may be composed of any numbers, further variables or object parameters, function calls, brackets, and arithmetic operators.

The following operators are available in expressions:
 = Assigns the result right of the '=' to the variable left of the '='. +-*/ The usual mathematical operators. * and / have a higher priority than + and -. % Modulo operator, the integer remainder of a division (see also modf). | Bitwise OR, can be used to set certains bits in a variable. ^ Bitwise exclusive OR, can be used to toggle certain bits in a variable. ~ Bitwise invert, toggles all bits of a variable. & Bitwise AND, can be used to reset certains bits in a variable. >> Bitwise right shift, can be used to divide a positive integer value by 2. << Bitwise left shift, can be used to multiply a positive integer value by 2. () Brackets, for defining the priority of mathematical operations. Always use brackets when priority matters!

Examples:

```x = (a + 1) * b / c;
z = 10;
x = x >> 2; // divides x by 4 (integer only)
x = x << 3; // multiplies x by 8  (integer only)
x = fraction(x) << 10; // copies the fractional part of x (10 bits) into the integer part
```

Assignment operators

The "="-character can be combined with the basic operators:

 += Adds the result right of the operator to the variable left of the operator. -= Subtracts the result right of the operator from the variable left of the operator. *= Multiplies the variable left of the operator by the result right of the operator. /= Divides the variable left of the operator by the result right of the operator. %= Sets the variable left of the operator to the remainder of the division by the result right of the operator. |= Bitwise OR's the the result right of the operator and the variable left of the operator. &= Bitwise AND's the the result right of the operator and the variable left of the operator. ^= Bitwise excöusive OR's the the result right of the operator and the variable left of the operator. >>= Bitwise right shift the variable left of the operator by the result right of the operator. <<= Bitwise left shift the variable left of the operator by the result right of the operator.

Increment and decrement operators

By placing a '++' at the end of a variable, 1 is added; by placing a '--', 1 is subtracted. This is a convenient shortcut for counting a variable up or down.

Examples:

```x = x + 1; // add 1 to x
z += 1; // add 1 to x
x++; // add 1 to x (integer only)
```

Remarks:

• For setting and resetting flags through the & or | operators, use long or int variables.
•  !!  The precedence of comparison and expression operators follows the C/C++ standard. Use parentheses in case of doubt. For instance, the expressions (x & y == z) and ((x & y) == z) give different results because the & operator has lower precedence than the == operator.