Some Terminology Arithmetical Operations Operations on Complex Types Comparison Logical Expressions Bitwise Operations Operations on Sets Indexing Assignment Type Conversions The Comma Operator Call and Splice Operator Precedence and Associativity

# Arithmetical Operations

Pike can do all the usual arithmetic operations: addition (which is expressed with the operator +), subtraction (-), division (/), multiplication (*), and also modulo (%). The modulo operation, sometimes called "remainder" or "rest", gives the remainder from a division. For example, if you divide 7 by 3, 3 goes in 7 two times. But there is a remainder of 1, and that is the result of the modulo operation.

Here is a table of the arithmetic operations:

OperationSyntaxResult

a + b

the sum of a and b

Subtraction

a - b

b subtracted from a

Negation

- a

minus a

Multiplication

a * b

a multiplied by b

Division

a / b

a divided by b

Modulo

a % b

the remainder of a division between a and b

Remember that pike makes a difference between numerical values that are integers (the type int), and numerical values that are real or "floating-point" numbers (the type float). This has some importance for how expressions with arithmetic operations are calculated by Pike. If at least one of the operands is a float, we use the floating-point versions of the operation. In if both operands are integers, we use a special integer-only version of the operation. For most of the operations, the only difference is that the type of the result will be different: 2 + 2 will give the integer value 4, while 2 + 2.0 will give the floating-point value 4.0. But with division is more important.

With floating-point division, such as in 9.0 / 4.0, the result is a floating-point value, in this case 2.25. But with integer division, such as in 9 / 4, the result is only the integer part, in this case 2.

The fact that integer division only gives the integer part can be treacherous: If 73 out of 92 people payed their income tax on time, don't try to calculate the percentage with the expression 73 / 92 * 100. That would give the result 0.

It is very common in programs to increment or decrement a variable with one, such as in the statements

```i = i + 1;
p = p - 1;```

To simplify such programs, Pike has these extra operators, which you can use if you want to:

OperationSyntaxResult

Increment

++ a

increments a and returns the new value for a

Decrement

-- a

decrements a and returns the new value for a

Post increment

a ++

increments a and returns the old value for a

Post decrement

a --

decrements a and returns the old value for a

The two versions of increment, ++i and i++, both increment the value in the variable i with 1. The difference is if we want to use them as parts of a larger expression. In that case, ++i gives the new, incremented, contents of i as value, while i++ gives the old contents of i as value. The same difference applies to --i and i--.