2012-06-05 25 views

Respuesta

56

El carácter de declaración de tipo para Doble es el signo de número (#). También llamado HASH

Otros caracteres de declaración de tipo son:

  1. Entero%
  2. largo &
  3. moneda @
  4. individual!
  5. doble #
  6. Cadena $

no entienden el significado de # aquí.

Esto implica que cuando se evalúa la expresión, el número delante del carácter de declaración de tipo se trata como un tipo de datos específico en lugar de como una variante.

Vea este ejemplo, que son básicamente lo mismo.

Sub Sample1() 
    Dim a# 

    a = 1.2 

    Debug.Print a 
End Sub 

Sub Sample2() 
    Dim a As Double 

    a = 1.2 

    Debug.Print a 
End Sub 

EDITAR

Voy a explicar un poco más en detalle.

consideran este dos procedimientos

Sub Sample1() 
    Dim a As Double, b As Integer 

    b = 32767 
    a = b * 100 

    Debug.Print a 
End Sub 

Sub Sample2() 
    Dim a As Double, b As Integer 

    b = 32767 
    a = b * 100# 

    Debug.Print a 
End Sub 

Pregunta: Uno de ellos se producirá un error. ¿Puedes adivinar cuál?

Ans: El primer procedimiento Sub Sample1() fallará.

Razón:

En Sample2, cuando lo hace b * 100# el resultado del cálculo será de tipo Double. Dado que está dentro de los límites de Doble, el cálculo tiene éxito y el resultado se asigna a la variable a.

Ahora en Sample1, cuando haga b * 100, el resultado del cálculo será del tipo Integer, ya que ambos operandos son de tipo entero. Pero el resultado del cálculo excede los límites del almacenamiento entero. Como resultado, se producirá un error.

Espero que ayude :)

+0

+1 Incluso desde los viejos tiempos VB, he encontrado estos accesos directos muy útiles. :) –

+2

@PradeepKumar: Sí, estos accesos directos son útiles, pero nunca me gustaron :) Siempre he sido muy "expresivo" con mis declaraciones, supongo: P –

+0

Muy bien explicado. He visto a muchos desarrolladores confundirse con esto. No parecen poder distinguir entre el hecho de que la variable de memoria utilizada para el cálculo es diferente de la variable de destino de la asignación, y sus tipos de datos pueden ser diferentes. :) –

Cuestiones relacionadas