? (Avaliar Expressão)

O comando ponto de interrogação (?) avalia e exibe o valor de uma expressão.

Um ponto de interrogação por si só (?) exibe a ajuda do comando. O ? comando expression avalia a expressão fornecida.

? Expression

Parâmetros

Expressão

Especifica a expressão a ser avaliada.

Ambiente

Item Descrição
Modos Modo de usuário, modo kernel
Destinos Ao vivo, despejo de memória
Plataformas Tudo

Comentários

A entrada e a saída do comando dependem se você está usando a ? sintaxe de expressão MASM ou a sintaxe de expressão C++. Para obter mais informações sobre esses tipos de sintaxe de expressão, consulte Avaliando expressões e sintaxe de expressão numérica.

Se você estiver usando a sintaxe MASM, a entrada e a saída dependerão da base atual. Para alterar a base, use o comando n (Definir Base Numérica).

O ? comando avalia símbolos na expressão no contexto do thread e do processo atuais.

Algumas cadeias de caracteres podem conter escapes, como \n, \", \re \b, que devem ser lidos literalmente, em vez de interpretados pelo avaliador. Se um escape dentro de uma cadeia de caracteres for interpretado pelo avaliador, poderão ocorrer erros na avaliação. Por exemplo:

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

Nos dois primeiros exemplos, mesmo que a cadeia de caracteres corresponda ao padrão, o avaliador está retornando um valor de FALSE. Na terceira, o avaliador não pode fazer uma comparação porque a cadeia de caracteres termina em uma barra invertida ( \ ) e, portanto, o é traduzido \" pelo avaliador.

Para fazer com que o avaliador interprete uma cadeia de caracteres literalmente, você deve usar a @"String" sintaxe. O exemplo de código a seguir mostra os resultados corretos:

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

Nos exemplos anteriores, o $spat operador MASM verifica a primeira cadeia de caracteres para determinar se ela corresponde (sem distinção entre maiúsculas e minúsculas) ao padrão da segunda cadeia de caracteres. Para obter mais informações sobre operadores MASM, consulte o tópico Números e operadores MASM.

Confira também

?? (Avaliar expressão C++)

.formats (Mostrar formatos numéricos)

Números e operadores MASM

Números e operadores C++

Expressões MASM x Expressões C++

Exemplos de expressão mista