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 an @.
The standard programming language operators !, ~, *, /, %, +, -, >>, <<, <, <=, >, >=, ==, |=, &, ^, |, &&, || are supported on number 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 structures) 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.