# Arithmetic Expressions

### Evaluation of arithmetic expressions

In general, the term arithmetic means calculating with (whole) numbers. These include the basic arithmetical operations:

These basic arithmetical operations can be used within the template syntax by means of arithmetic expressions. Several expressions also allow calculation with floating (decimal) point numbers. One option for output arithmetical expressions is using the instruction \$CMS_VALUE(...)\$.

Numerical values can be added using the operator '+'.

The expression:

`1 + 1 `

returns the value '2'.

Apart from integers, floating point numbers can also be used here:

`3.1234 + 3.1234`

The evaluation returns the value '6.2468'.

### Subtraction

Numerical values can be subtracted using the operator '-'.

The expression:

`1 - 1 `

returns the value '0'.

Apart from integers, floating point numbers can also be used here:

`3.1234 - 2.1`

The evaluation returns the value '1.0234'.

### Multiplication

Numerical values can be multiplied using the operator '*'.

The expression:

`2 * 2 `

returns the value '4'.

Analogously:

`2 * x`

Insofar:

`\$CMS_SET(x, 2)\$`

Apart from integers, floating point numbers can also be used here:

`3.1234 * 2.1`

The evaluation returns the value '6.55914'.

### Division

Numerical values can be divided using the operator '/'.

The expression:

`2 / 2 `

returns the value '1'.

Analogously:

`2 / x`

Insofar:

`\$CMS_SET(x, 2)\$`

Apart from integers, floating point numbers can also be used here:

`3.1234 / 2.1`

The evaluation returns the value '1.4873'.

### Modulo

Modulo (remainder) is a widely used function which gives the remainder of the division of two integers. In expressions the operator '%' is used for this.

The expression:

`7 % 2 `

returns the value '1'.

Analogously:

`7 % x`

Insofar:

`\$CMS_SET(x, 2)\$`

### Combination of different arithmetical expressions

The arithmetical expressions introduced above can be combined with each other in any way required. Multiplication, division and modulo division are performed first, addition and subtraction are performed second (i.e. multiplicative operations take precedence over additive operations). This means, that multiplication, division and modulo operators have a higher precedence than addition and subtraction operators.

This means, in the following expression:

`2 + 3 * 4`

`3 * 4`

is evaluated first and then the result of this evaluation ('12') is linked with the next value:

`2 + 12`

returns the value '14'.

If operators have the same precedence they are evaluated from left to right.

However, the evaluation order can be influenced by inserting parentheses:

`(2 + 3) * 4`

returns the value '20'.

A further example:

`(2 * 3 + 6) / (2 + 2) `

returns the value '3'.

On the other hand:

`(2 * (3 + 6)) / (2 + 2)`

returns the value '4.5'. This means, in expressions with nested parentheses: inner parentheses are evaluated first. In combination with logical and / or comparative expressions arithmetical expressions are carried out preferentially.The following operator precedence results: * / % (multiplication, division, modulo division) + - (addition, subtraction) < > <= >= (less than, greater than, less than or equal, greater than or equal) == != (equality, inequality) && (logical AND) || (logical OR) Using parentheses can alter the order of evaluation determined by operator precedence as described above.