# Operators

Operators in TorqueScript behave very similarly to operators in real world math and other programming languages. You should recognize quite a few of these from math classes you took in school, but with small syntactical changes. The rest of this section will explain the syntax and show a brief example, but we will cover these in depth in later guides.

These are your basic math ops.

Operator | Name | Example | Explanation |
---|---|---|---|

`*` | multiplication | `$a * $b` | Multiply `$a` and `$b` . |

`/` | division | `$a / $b` | Divide `$a` by `$b` . |

`%` | modulo | `$a % $b` | Remainder of `$a` divided by `$b` . |

`+` | addition | `$a + $b` | Add `$a` and `$b` . |

`-` | subtraction | `$a - $b` | Subtract `$b` from `$a` . |

`++` | auto-increment (post-fix only) | `$a++` | Increment `$a` . |

`--` | auto-decrement (post-fix only) | `$b--` | Decrement `$b` . |

Used in comparing values and variables against each other.

Operator | Name | Example | Explanation |
---|---|---|---|

`<` | Less than | `$a < $b` | 1 if `$a` is less than `$b` |

`>` | More than | `$a > $b` | 1 if `$a` is greater than `$b` |

`<=` | Less than or Equal to | `$a <= $b` | 1 if `$a` is less than or equal to `$b` |

`>=` | More than or Equal to | `$a >= $b` | 1 if `$a` is greater than or equal to `$b` |

`==` | Equal to | `$a == $b` | 1 if `$a` is equal to `$b` |

`!=` | Not equal to | `$a != $b` | 1 if `$a` is not equal to `$b` |

`!` | Logical NOT | `!$a` | 1 if `$a` is 0 |

`&&` | Logical AND | `$a && $b` | 1 if `$a` and `$b` are both non-zero |

`||` | Logical OR | `$a || $b` | 1 if either `$a` or `$b` is non-zero |

`$=` | String equal to | `$c $= $d` | 1 if `$c` equal to `$d` . |

`!$=` | String not equal to | `$c !$= $d` | 1 if `$c` not equal to `$d` . |

Used for comparing and shifting bits.

Operator | Name | Example | Explanation |
---|---|---|---|

`~` | Bitwise complement | `~$a` | flip bits 1 to 0 and 0 to 1 |

`&` | Bitwise AND | `$a & $b` | composite of elements where bits in same position are 1 |

`|` | Bitwise OR | `$a | $b` | composite of elements where bits 1 in either of the two elements |

`^` | Bitwise XOR | `$a ^ $b` | composite of elements where bits in same position are opposite |

`<<` | Left Shift | `$a << 3` | element shifted left by 3 and padded with zeros |

`>>` | Right Shift | `$a >> 3` | element shifted right by 3 and padded with zeros |

Used for setting the value of variables.

Operator | Name | Example | Explanation |
---|---|---|---|

`=` | Assignment | `$a = $b;` | Assign value of `$b` to `$a` |

`op=` | Assignment Operators | `$a op= $b;` | Equivalent to `$a = $a op $b` , where op can be any of: * / % + - & | ^ << >> |

There are special values you can use to concatenate strings and variables. Concatenation refers to the joining of multiple values into a single variable. The following is the basic syntax:

"string 1" operation "string 2"

You can use string operators similarly to how you use mathematical operators (=, +, -, *). You have four operators at your disposal:

Operator | Name | Example | Explanation |
---|---|---|---|

`@` | String concatenation | `$c @ $d` | Concatenates strings $c and $d into a single string. Numeric literals/variables convert to strings. |

`NL` | New Line | `$c NL $d` | Concatenates strings $c and $d into a single string separated by new-line. Such a string can be decomposed with getRecord() |

`TAB` | Tab | `$c TAB $d` | Concatenates strings $c and $d into a single string separated by tab. Such a string can be decomposed with getField() |

`SPC` | Space | `$c SPC $d` | Concatenates strings $c and $d into a single string separated by space. Such a string can be decomposed with getWord() |

General programming operators.

Operator | Name | Example | Explanation |
---|---|---|---|

`? :` | Conditional | `x ? y : z` | Evaluates to `y` if `x` equal to 1, else evaluates to `z` |

`[]` | Array element | `$a[5]` | Synonymous with `$a5` |

`( )` | Delimiting, Grouping | `t2dGetMin(%a, %b)` `if ( $a == $b )` `($a+$b)*($c-$d)` | Argument list for function call Used with if, for, while, switch keywords Control associativity in expressions |

`{}` | Compound statement | `if (1) {$a = 1; $b = 2;}` `function foo() {$a = 1;}` | Delimit multiple statements, optional for if, else, for, while Required for switch, datablock, new, function |

`,` | Listing | `t2dGetMin(%a, %b)` `%M[1,2]` | Delimiter for arguments |

`::` | Namespace | `Item::onCollision()` | This definition of the `onCollision()` function is in the `Item` namespace |

`.` | Field/Method selection | `%obj.field` `%obj.method()` | Select a console method or field |

`//` | Single-line comment | `// This is a comment` | Used to comment out a single line of code |

`/* */` | Multi-line comment | `/*This is a a` `multi-line` `comment*/` | Used to comment out multiple consecutive lines `/*` opens the comment, and `*/` closes it |

Last modified 9mo ago