# UnrealScript Language Reference/Language Functionality

## Language Functionality

### Built-In Operators And Their Precedence

UnrealScript provides a wide variety of C/C++/Java-style operators for such operations as adding numbers together, comaring values, and incrementing variables. The complete set of operators is defined in Object.u, but here is a recap. Here are the standard operators, in order of precedence. Note that all of the C style operators have the same precedence as they do in C.

Operator |
Types it applies to |
Meaning |

`$` |
string | String concatenation |

`*=` |
byte, int, float, vector, rotation | Multiply and assign |

`/=` |
byte, int, float, vector, rotation | Divide and assign |

`+=` |
byte, int, float, vector | Add and assign |

`-=` |
byte, int, float, vector | Subtract and assign |

`||` |
bool | Logical or |

`&&` |
bool | Logical and |

`&` |
int | Bitwise and |

`|` |
int | Bitwise or |

`^` |
int | Bitwise exlusive or |

`!=` |
all |
Compare for inequality |

`==` |
all |
Compare for equality |

`<` |
byte, int, float, string | Less than |

`>` |
byte, int, float, string | Greater than |

`<=` |
byte, int, float, string | Less than or equal to |

`>=` |
byte, int, float, string | Greater than or equal to |

`~=` |
float, string | Approximate equality (within 0.0001), case-insensitive equality |

`<<` |
int, vector | Left shift (int), Forward vector transformation (vector) |

`>>` |
int, vector | Right shift (int), Reverse vector transformation (vector) |

`+` |
byte, int, float, vector | Add |

`-` |
byte, int, float, vector | Subtract |

`%` |
float | Modulo (remainder after division) |

`*` |
byte, int, float, vector, rotation | Multiply |

`/` |
byte, int, float, vector, rotation | Divide |

`dot` |
vector | Vector dot product |

`cross` |
vector | Vector cross product |

`**` |
float | Exponentiation |

The above table lists the operators in order of precedence (with operators of the same precedence grouped together). When you type in a complex expression like "1*2+3*4", UnrealScript automatically groups the operators by precedence. Since multiplication has a higher precedence than addition, the expression is evaluated as "(1*2)+(3*4)".

The "&&" (logical and) and "||" (logical or) operators are short-circuited: if the result of the expression can be determined solely from the first expression (for example, if the first argument of && is false), the second expression is not evaluated.

In addition, UnrealScript supports the following unary operators:

Operator |
Types it applies to |
Meaning |

`!` |
bool | Logical not |

`-` |
int, float | negation |

`~` |
int | bitwise negation |

`++, --` |
int, float | Increment or Decrement (either before or after a variable) |

more on this topic in the Wiki: Operators |

### General-Purpose Functions

Integer functions:

- int Rand( int Max )
- Returns a random number from 0 to Max-1.
- int Min( int A, int B )
- Returns the minimum of the two numbers.
- int Max( int A, int B )
- Returns the maximum of the two numbers.
- int Clamp( int V, int A, int B )
- Returns the first number clamped to the interval from A to B.

Floating point functions:

- float Abs( float A )
- Returns the absolute value of the number.
- float Sin( float A )
- Returns the sine of the number expressed in radius.
- float Cos( float A )
- Returns the cosine of the number expressed in radians.
- float Tan( float A )
- Returns the tangent of the number expressed in radians.
- float Atan( float A )
- Returns the inverse tangent of the number expressed in radians.
- float Exp( float A )
- Returns the constant "e" raised to the power of A.
- float Loge( float A )
- Returns the log (to the base "e") of A.
- float Sqrt( float A )
- Returns the square root of A.
- float Square( float A )
- Returns the square of A = A*A.
- float FRand()
- Returns a random number from 0.0 to 1.0.
- float FMin( float A, float B )
- Returns the minimum of two numbers.
- float FMax( float A, float B )
- Returns the maximum of two numbers.
- float FClamp( float V, float A, float B )
- Returns the first number clamped to the interval from A to B.
- float Lerp( float Alpha, float A, float B )
- Returns the linear interpolation between A and B.
- float Smerp( float Alpha, float A, float B )
- Returns an Alpha-smooth nonlinear interpolation between A and B.

Unreal’s string functions have a distinct Basic look and feel:

- int Len( coerce string[255] S )
- Returns the length of a string.
- int InStr( coerce string[255] S, coerce string[255] t)
- Returns the offset into the first string of the second string if it exists, or -1 if not.
- string[255] Mid ( coerce string[255] S, int i, optional int j )
- Returns the middle part of the string S, starting and character i and including j characters (or all of them if j is not specified).
- string[255] Left ( coerce string[255] S, int i )
- Returns the i leftmost characters of s.
- string[255] Right ( coerce string[255] S, int i )
- Returns the i rightmost characters of s.
- string[255] Caps ( coerce string[255] S )
- Returns S converted to uppercase.

Vector functions:

- float Size( vector A )
- Returns the euclidean size of the vector (the square root of the sum of the components squared).
- vector Normal( vector A )
- Returns a vector of size 1.0, facing in the direction of the specified vector.
- Invert ( out vector X, out vector Y, out vector Z )
- Inverts a coordinate system specified by three axis vectors.
- vector VRand ( )
- Returns a uniformly distributed random vector.
- float Dist ( vector A, vector B )
- Returns the euclidean distance between two points.
- vector MirrorVectorByNormal( vector Vect, vector Normal )
- Mirrors a vector about a specified normal vector.

more on this topic in the Wiki: Global Function |

Prev Page: /States – *Section 7 of 9* – Next Page: /Advanced Language Features