Expand Minimize

? (Evaluate Expression)

The question mark (?) command evaluates and displays the value of an expression.

Note   A question mark by itself (?) displays command help. The ? expression command evaluates the given expression.

? Expression

Parameters

Expression

Specifies the expression to evaluate.

Environment

Modes

User mode, kernel mode

Targets

Live, crash dump

Platforms

All

 

Remarks

The input and output of the ? command depend on whether you are using MASM expression syntax or C++ expression syntax. For more information about these kinds of expression syntax, see Evaluating Expressions and Numerical Expression Syntax.

If you are using MASM syntax, the input and output depend on the current radix. To change the radix, use the n (Set Number Base) command.

The ? command evaluates symbols in the expression in the context of the current thread and process.

Some strings may contain escapes, such as \n, \", \r, and \b, that are meant to be read literally, rather than interpreted by the evaluator. If an escape within a string is interpreted by the evaluator, errors in evaluation can occur. For example:


0:000> as AliasName c:\dir\name.txt
0:000> al
  Alias            Value
 -------          -------
 AliasName        c:\dir\name.txt
0:001> ? $spat( "c:\dir\name.txt", "*name*" )
Evaluate expression: 0 = 00000000
0:001> ? $spat( "${AliasName}", "*name*" )
Evaluate expression: 0 = 00000000
0:001> ? $spat( "c:\dir\", "*filename*" )
Syntax error at '( "c:\dir\", "*filename*" )

In the first two examples, even though the string does match the pattern, the evaluator is returning a value of FALSE. In the third, the evaluator cannot make a comparison because the string ends in a backslash ( \ ), and so the \" is translated by the evaluator.

To get the evaluator to interpret a string literally, you must use the @"String" syntax. The following code example shows the correct results:


0:000> ? $spat( @"c:\dir\name.txt", "*name*" )
Evaluate expression: 1 = 00000000`00000001
0:000> ? $spat( @"${AliasName}", "*name*" )
Evaluate expression: 1 = 00000000`00000001
0:001> ? $spat( @"c:\dir\", "*filename*" )
Evaluate expression: 0 = 00000000

In the preceding examples, the $spat MASM operator checks the first string to determine whether it matches (case-insensitive) the pattern of the second string. For more information about MASM operators, see the MASM Numbers and Operators topic.

See also

?? (Evaluate C++ Expression)
.formats (Show Number Formats)

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft