Var

Declares a variable whose type is implied from the initializer expression

Syntax
   [Static] Var [Shared] symbolname = expression[, symbolname = expression]

Description
   Var declares a variable whose type is implied from the initializer 
   expression. It is illegal to specify an explicit type in a Var 
   declaration. The initializer expression can be either a constant or any 
   variable of any type.

   Note: WString is not supported with Var, due to the fact that there is 
   no var-len WString type. This isn't likely to change, due to the 
   complexities involved with handling Unicode.

   Since the type of the variable is inferred from what you assign into it, 
   it's helpful to know how literals work. Any literal number without a 
   decimal point defaults to Integer. A literal number with a decimal point 
   defaults to Double.  See Literals for further information.

   All ZString expressions, including string literals and dereferenced 
   ZString Ptrs, will be given the String variable type.

   Explicit suffixes may be used on literal variables, to change/clarify 
   their type. See Literals and Variable Types for some more information 
   about suffixes that can be used on literals.

   Note: Suffixes must appear on the initializer, not on the variable. 
   Trying to use Var with a variable that has a suffix will throw a compile 
   error.

Example
   Var a  = Cast(Byte, 0)
   Var b  = Cast(Short, 0)
   Var c  = Cast(Integer, 0)
   Var d  = Cast(LongInt, 0)
   Var au = Cast(UByte, 0)   
   Var bu = Cast(UShort, 0)  
   Var cu = Cast(UInteger, 0)
   Var du = Cast(ULongInt, 0)
   Var e  = Cast(Single, 0.0)
   Var f  = Cast(Double, 0.0)
   Var g  = @c      '' integer ptr
   Var h  = @a      '' byte ptr
   Var s2 = "hello" '' var-len string

   Var ii = 6728   '' implicit integer
   Var id = 6728.0 '' implicit double

   Print "Byte: ";Len(a)
   Print "Short: ";Len(b)
   Print "Integer: ";Len(c)
   Print "Longint: ";Len(d)
   Print "UByte: ";Len(au)
   Print "UShort: ";Len(bu)
   Print "UInteger: ";Len(cu)
   Print "ULongint: ";Len(du)
   Print "Single: ";Len(e)
   Print "Double: ";Len(f)
   Print "Integer Pointer: ";Len(g)
   Print "Byte Pointer: ";Len(h)
   Print "Variable String: ";Len(s2)
   Print
   Print "Integer: ";Len(ii)
   Print "Double: ";Len(id)

   Sleep

Differences from QB
   * New to FreeBASIC

Dialect Differences
   * Only valid in the -lang fb dialect.

See also
   * Common
   * Dim
   * Erase
   * Extern
   * LBound
   * ReDim
   * Preserve
   * Shared
   * Static
   * Byref (Variables)
   * UBound
   * Pointers to Procedures

