Поделиться через


? (Вычислять выражение)

Команда вопросительного знака (?) вычисляет и отображает значение выражения.

Сам по себе вопросительный знак (?) отображает справку по команде. Команда ? выражения вычисляет заданное выражение.

? Expression

Параметры

Выражение

Указывает выражение для вычисления.

Среда

Позиция Description
Режимы Режим пользователя, режим ядра
Целевые объекты Динамический, аварийный дампа
Платформы Все

Замечания

Входные и выходные данные ? команды зависят от того, используется ли синтаксис выражения MASM или синтаксис выражения C++. Дополнительные сведения об этих типах синтаксиса выражений см. в разделе "Оценка выражений" и "Синтаксис числовых выражений".

Если используется синтаксис MASM, входные и выходные данные зависят от текущего радикса. Чтобы изменить радикс, используйте команду n (set Number Base).

Команда ? вычисляет символы в выражении в контексте текущего потока и процесса.

Некоторые строки могут содержать escape-адреса, такие как \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

В предыдущих примерах оператор MASM проверяет первую строку, $spat чтобы определить, соответствует ли она (без учета регистра) шаблон второй строки. Дополнительные сведения о операторах MASM см. в разделе "Номера и операторы MASM".

См. также

?? (Оценка выражения C++ )

Форматы .форматов (отображение числовых форматов)

Номера и операторы MASM

Номера и операторы C++

Выражения MASM и выражения C++

Примеры смешанных выражений