arithmetic operator

| Operator | Name | Description | Example
| ----- | ----- | ----- | -----
| + | Addition | Adds together two values | x + y
| - | Subtraction | Subtracts one value from another | x - y
| * | Multiplication | Multiplies two values | x * y
| / | Division | Divides one value by another | x / y
| % | Modulus | Returns the division remainder | x % y
| ++ | Increment | Increases the value of a variable by 1 | ++x
| -- | Decrement | Decreases the value of a variable by 1 | --x

Some language does not support increment and decrement operators to reduce complexity. Pre-increment and post-increment (and the decrement equivalents), while convenient, are also fairly complex. They require knowledge of evaluation order, and often lead to subtle bugs and undefined behaviour in C and C++. Without them, x = x + 1 or x += 1 is only slightly longer, but unambiguous.
The % operator gives you a REMAINDER(another name for modulus) of a number. For C/C++, this is only defined for integer operations. Java or Python is a little broader and allows you to get the remainder of a floating point number for the remainder of how many times number can be divided into it.
If you try to insert a number into an integer constant or variable that cannot hold that value, by default Swift reports an error rather than allowing an invalid value to be created. This behaviour gives extra safety when you work with numbers that are too large or too small. However, when you specifically want an overflow condition to truncate the number of available bits, you can opt in to this behaviour rather than triggering an error. Swift provides three arithmetic overflow operators that opt in to the overflow behaviour for integer calculations. These operators all begin with an ampersand (&):
| Operator | Name | Description | Example
| ----- | ----- | ----- | -----
| &+ | Overflow addition | Truncates when adds two values  | x &+ y
| &- | Overflow subtraction | Truncates when subtracts one value from another | x &- y
| &* | Overflow multiplication | Truncates when multiplies two values | x &* y