.. index:: single: Operators; Introduction ========= Operators ========= In this chapter we will introduce the operators provided by the Ring programming langauge. .. index:: pair: Operators; Arithmetic Operators Arithmetic Operators ==================== The next table presents all of the arithmetic operators provided by the Ring language. Assume variable X=50 and variable Y=10 then: +------------+---------------+----------+---------+ | Operator | Description | Example | Result | +============+===============+==========+=========+ | \+ | Add | x+y | 60 | +------------+---------------+----------+---------+ | \- | Subtract | x-y | 40 | +------------+---------------+----------+---------+ | \* | Multiplies | x*y | 500 | +------------+---------------+----------+---------+ | / | Divide | x/y | 5 | +------------+---------------+----------+---------+ | % | Modulus | x%y | 0 | +------------+---------------+----------+---------+ | ++ | Increment | x++ | 51 | +------------+---------------+----------+---------+ | \- \- | Decrement | x\- \- | 49 | +------------+---------------+----------+---------+ .. index:: pair: Operators; Relational Operators Relational Operators ==================== The next table presents all of the relational operators provided by the Ring language. Assume variable X=50 and variable Y=10 then: +------------+---------------------+-------------+---------+ | Operator | Description | Example | Result | +============+=====================+=============+=========+ | = | Equal | x = y | False | +------------+---------------------+-------------+---------+ | != | Not Equal | x != y | True | +------------+---------------------+-------------+---------+ | > | Greater than | x > y | True | +------------+---------------------+-------------+---------+ | < | Less than | x < y | False | +------------+---------------------+-------------+---------+ | >= | Greater or Equal | x >= y | True | +------------+---------------------+-------------+---------+ | <= | Less than or Equal | x <= y | False | +------------+---------------------+-------------+---------+ .. index:: pair: Operators; Logical Operators Logical Operators ================= The next table presents all of the logical operators provided by the Ring language. Assume variable X=True and variable Y=False then: +------------+---------------------+-------------+---------+ | Operator | Description | Example | Result | +============+=====================+=============+=========+ | and | Logical AND | x and y | False | +------------+---------------------+-------------+---------+ | or | Logical OR | x or y | True | +------------+---------------------+-------------+---------+ | not | Logical Not | not x | False | +------------+---------------------+-------------+---------+ Another style +------------+---------------------+-------------+---------+ | Operator | Description | Example | Result | +============+=====================+=============+=========+ | && | Logical AND | x && y | False | +------------+---------------------+-------------+---------+ | || | Logical OR | x || y | True | +------------+---------------------+-------------+---------+ | ! | Logical Not | ! x | False | +------------+---------------------+-------------+---------+ .. index:: pair: Operators; Bitwise Operators Bitwise Operators ================= The next table presents all of the bitwise operators provided by the Ring language. Assume variable X=8 and variable Y=2 then: +------------+-----------------------------+-------------+---------+ | Operator | Description | Example | Result | +============+=============================+=============+=========+ | & | Binary AND | x & y | 0 | +------------+-----------------------------+-------------+---------+ | \| | Binary OR | x \| y | 10 | +------------+-----------------------------+-------------+---------+ | ^ | Binary XOR | x ^ y | 10 | +------------+-----------------------------+-------------+---------+ | ~ | Binary Ones Complement | ~x | -9 | +------------+-----------------------------+-------------+---------+ | << | Binary Left Shift | x << y | 32 | +------------+-----------------------------+-------------+---------+ | >> | Binary Right Shift | x >> y | 2 | +------------+-----------------------------+-------------+---------+ .. index:: pair: Operators; Assignment Operators Assignment Operators ==================== The next table presents all of the assignment operators provided by the Ring language. Assume variable X=8 then: +------------+-----------------------------+-------------+---------+ | Operator | Description | Example | Result | +============+=============================+=============+=========+ | = | Assignment | x = 10 | x=10 | +------------+-----------------------------+-------------+---------+ | += | Add AND assignment | x += 5 | x=13 | +------------+-----------------------------+-------------+---------+ | -= | Subtract AND assignment | x -= 3 | x=5 | +------------+-----------------------------+-------------+---------+ | \*= | Multiply AND assignment | x \*= 2 | x=16 | +------------+-----------------------------+-------------+---------+ | /= | Divide AND assignment | x /= 3 | x=2.67 | +------------+-----------------------------+-------------+---------+ | %= | Modulus AND assignment | x %= 2 | x=0 | +------------+-----------------------------+-------------+---------+ | <<= | Left shift AND assignment | x <<= 2 | x=32 | +------------+-----------------------------+-------------+---------+ | >>= | Right shift AND assignment | x >>= 2 | x=2 | +------------+-----------------------------+-------------+---------+ | &= | Bitwise AND assignment | x &= 4 | x=0 | +------------+-----------------------------+-------------+---------+ | \|= | Bitwise OR and assignment | x \|= 3 | x=11 | +------------+-----------------------------+-------------+---------+ | ^= | Bitwise XOR and assignment | x ^= 4 | x=12 | +------------+-----------------------------+-------------+---------+ .. index:: pair: Operators; Misc Operators Misc Operators ============== ============== ====================================================================== Operator Description ============== ====================================================================== :literal using : before identifier mean literal Start:End create list contains items from start to end [list items] define list items list[index] access list item obj.name using the dot operator to access object members (attributes/methods). obj {stmts} execute statements with direct access to object attributes & methods func(para,...) call function using parameters separated by comma ? Print expression then new line ============== ====================================================================== .. index:: pair: Operators; Operators Precedence Operators Precedence ==================== The next table present operators from higher precedence (Evaluated first) to lower precedence. +----------------------------------------------------------------+ | Operator | +================================================================+ | . [] () {} | +----------------------------------------------------------------+ | \- \~ :Literal [list items] | +----------------------------------------------------------------+ | ++ \- \- | +----------------------------------------------------------------+ | Start:End | +----------------------------------------------------------------+ | \* / % | +----------------------------------------------------------------+ | \+ \- | +----------------------------------------------------------------+ | << >> | +----------------------------------------------------------------+ | & | +----------------------------------------------------------------+ | \| ^ | +----------------------------------------------------------------+ | < > <= >= | +----------------------------------------------------------------+ | = != | +----------------------------------------------------------------+ | not ! | +----------------------------------------------------------------+ | and or && || | +----------------------------------------------------------------+ | Assignment = += -= \*= /= %=>>= <<= &= ^= \|= | +----------------------------------------------------------------+ | ? | +----------------------------------------------------------------+ Example: .. code-block:: ring See 3+5*4 # prints 23