Compartir a través de


? (Evaluar expresión)

El comando de signo de interrogación (?) evalúa y muestra el valor de una expresión.

Un signo de interrogación por sí mismo (?) muestra la ayuda del comando. El ? comando expression evalúa la expresión especificada.

? Expression

Parámetros

Expression

Especifica la expresión que se va a evaluar.

Entorno

Elemento Descripción
Modos Modo de usuario, modo kernel
Destinos En tiempo real, volcado de errores
Platforms All

Comentarios

La entrada y salida del ? comando dependen de si usa la sintaxis de expresión MASM o la sintaxis de expresión de C++. Para obtener más información sobre estos tipos de sintaxis de expresión, vea Evaluación de expresiones y sintaxis de expresiones numéricas.

Si usa la sintaxis de MASM, la entrada y la salida dependen del radix actual. Para cambiar el radix, use el comando n (Establecer base de número).

El ? comando evalúa los símbolos de la expresión en el contexto del subproceso y el proceso actuales.

Algunas cadenas pueden contener escapes, como \n, \", \ry \b, que están diseñados para leerse literalmente, en lugar de interpretarse por el evaluador. Si el evaluador interpreta un escape dentro de una cadena, pueden producirse errores en la evaluación. Por ejemplo:

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

En los dos primeros ejemplos, aunque la cadena coincide con el patrón, el evaluador devuelve un valor false. En la tercera parte, el evaluador no puede realizar una comparación porque la cadena termina en una barra diagonal inversa ( \ ) y, por tanto \" , el evaluador traduce .

Para que el evaluador interprete una cadena literalmente, debe usar la @"String" sintaxis . En el ejemplo de código siguiente se muestran los resultados correctos:

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

En los ejemplos anteriores, el $spat operador MASM comprueba la primera cadena para determinar si coincide (no distingue mayúsculas de minúsculas) el patrón de la segunda cadena. Para obtener más información sobre los operadores MASM, vea el tema Números y operadores de MASM.

Consulte también

?? (Evaluar expresión de C++)

.formats (Mostrar formatos de número)

Números y operadores de MASM

Números y operadores de C++

Expresiones de MASM frente a expresiones de C++

Ejemplos de expresiones mixtas