? (计算表达式)

) 命令 (? 问号计算并显示表达式的值。

问号本身 () 显示命令帮助。 表达式?命令计算给定的表达式。

? Expression

参数

表达式

指定要计算的表达式。

环境

说明
模式 用户模式、内核模式
目标 实时、故障转储
平台 全部

注解

命令的 ? 输入和输出取决于使用的是 MASM 表达式语法还是 C++ 表达式语法。 有关这些类型的表达式语法的详细信息,请参阅 计算表达式数值表达式语法

如果使用 MASM 语法,输入和输出取决于当前基数。 若要更改基数,请使用 n (Set Number Base) 命令。

命令 ? 在当前线程和进程的上下文中计算表达式中的符号。

某些字符串可能包含转义,例如 \n\"\r\b,这些转义应按字面意思读取,而不是由计算器解释。 如果计算器解释字符串中的转义,则计算中可能会出现错误。 例如:

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*" )

在前两个示例中,即使字符串与模式匹配,计算器也会返回 FALSE 值。 在第三个部分中,计算器无法进行比较,因为字符串以反斜杠结尾, ( \ ) ,因此 \" 由计算器转换。

若要使计算器按字面解释字符串,必须使用 @"String" 语法。 下面的代码示例显示了正确的结果:

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

在前面的示例中, $spat MASM 运算符检查第一个字符串,以确定它是否与 (不区分大小写) 第二个字符串的模式匹配。 有关 MASM 运算符的详细信息,请参阅 MASM 数字和运算符 主题。

另请参阅

?? (计算 C++ 表达式)

.formats(显示数字格式)

MASM 数字和运算符

C++ 数字和运算符

MASM 表达式与C++ 表达式

混合表达式示例