? (计算表达式)
) 命令 (?
问号计算并显示表达式的值。
问号本身 (?) 显示命令帮助。 表达式?
命令计算给定的表达式。
? 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 数字和运算符 主题。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈