The debugger can evaluate simple expressions that can be subsequently displayed in the watch window or as a tool-tip in the code editor.

The simplest expression is an identifier which the debugger tries to interpret in the following order:

Numbers can be used in expressions, hexadecimal numbers must be prefixed with ‘0x’.

Registers can be referenced by prefixing the register name with ‘@’.

The standard C and C++ operators !, ~, *, /, %, +, -, >>, <<, <, <=, >, >=, ==, |=, &, ^, |, &&, || are supported on numeric types.

The standard assignment operators =, +=, -=, *=, /=, %=, >>=, <<=, &=, |=, ^= are supported on number types.

The array subscript [] operator is supported on array and pointer types.

The structure access operator . is supported on structured types (this also works on pointers to sstructures) and the -> works similarly.

The dereference operator (prefix *) is supported on pointers, the addressof  (prefix &) and sizeof operators are supported.

Casting to basic pointer types is supported. For example (unsigned char *)0x300 can be used to display the memory at a given location.

Operators have the precedence and associativity that one would expect of a C like programming language.