Var
Declares a variable whose type is implied from the initializer expression
Syntax
`
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 does not have to be a constant, it can be, or, it can be 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`.
All `ZString` expressions, including string literals and dereferenced `ZString` `Ptr`s, 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 0.17

Dialect Differences

- Not available in the -lang qb dialect unless referenced with the alias `__Var`.

See also

- `Common`
- `Dim`
- `Erase`
- `Extern`
- `LBound`
- `ReDim`
- `Preserve`
- `Shared`
- `Static`
- `UBound`