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.