Var

Declares a variable whose type is implied from the initializer expression

Syntax
	[KeyPgStaticStatic] Var [KeyPgShared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: KeyPgWstringWString is not supported with Var, due to the fact that there is 
	no var-len KeyPgWstring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 KeyPgIntegerInteger. A literal number with a decimal point 
	defaults to KeyPgDoubleDouble.  See ProPgLiteralsLiterals for further information.

	All KeyPgZstringZString expressions, including string literals and dereferenced 
	KeyPgZstringZString KeyPgPtrPtrs, will be given the KeyPgStringString variable type.

	Explicit suffixes may be used on literal variables, to change/clarify 
	their type. See ProPgLiteralsLiterals and TblVarTypes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 CompilerOptlang-lang fb dialect.

See also
	* KeyPgCommonCommon
	* KeyPgDimDim
	* KeyPgEraseErase
	* KeyPgExternExtern
	* KeyPgLboundLBound
	* KeyPgRedimReDim
	* KeyPgPreservePreserve
	* KeyPgSharedShared
	* KeyPgStaticStatic
	* KeyPgByrefVariablesByref (Variables)
	* KeyPgUboundUBound
	* ProPgProcedurePointersPointers to Procedures

