QB64 uses more variable types than QBasic ever did. The variable type determines the size of values that numerical variables can hold.
Numerical Types
Type Name | Symbol | Minimum Value | Maximum Value | Size (Bytes) |
---|---|---|---|---|
_BIT | ` | -1 | 0 | 1/8 |
_BIT * n | `n | -128 | 127 | n/8 |
_UNSIGNED _BIT | ~` | 0 | 1 | 1/8 |
_BYTE | %% | -128 | 127 | 1 |
_UNSIGNED _BYTE | ~%% | 0 | 255 | 1 |
INTEGER | % | -32,768 | 32,767 | 2 |
_UNSIGNED INTEGER | ~% | 0 | 65,535 | 2 |
LONG | & | -2,147,483,648 | 2,147,483,647 | 4 |
_UNSIGNED LONG | ~& | 0 | 4,294,967,295 | 4 |
_INTEGER64 | && | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 | 8 |
_UNSIGNED _INTEGER64 | ~&& | 0 | 18,446,744,073,709,551,615 | 8 |
SINGLE | ! or none | -2.802597E-45 | +3.402823E+38 | 4 |
DOUBLE | # | -4.490656458412465E-324 | +1.797693134862310E+308 | 8 |
_FLOAT | ## | -1.18E−4932 | +1.18E+4932 | 32 (10 used) |
_OFFSET | %& | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 | Use LEN |
_UNSIGNED _OFFSET | ~%& | 0 | 18,446,744,073,709,551,615 | Use LEN |
_MEM | none | combined memory variable type | N/A | Use LEN |
Note: For the floating-point numeric types SINGLE (default when not assigned), DOUBLE and _FLOAT, the minimum values represent the smallest values closest to zero, while the maximum values represent the largest values closest to ±infinity. OFFSET dot values are used as a part of the _MEM variable type in QB64 to return or set the position in memory.
String Text Type
Type Name | Symbol | Minimum Length | Maximum Length | Size (Bytes) |
---|---|---|---|---|
STRING | $ | 0 | 2,147,483,647 | Use LEN |
STRING * n | $n | 1 | 2,147,483,647 | n |
If no suffix is used and no DEFxxx or _DEFINE command has been used and the variable hasn’t been DIMmed the default variable type is SINGLE. _MEM and _OFFSET variable types cannot be cast to other variable types!
All types dealing with number values are signed as a default. The symbol to define unsigned variables is ~ and is used just before the type suffix (~` is _UNSIGNED _BIT, ~%% is _UNSIGNED _BYTE, etc.).
SINGLE, DOUBLE and _FLOAT floating decimal point values cannot be _UNSIGNED!
Defining variable types:
DIM variable AS type _DEFINE range1-range2 AS value_type DEFINT range1-range2 DEFLNG range1-range2 DEFSNG range1-range2 DEFDBL range1-range2
Where range1 and range2 are the range of first letters to be defined as the default type when the variable is having no suffix and are not otherwise defined, the starting letter of the variable then defines the type as specified by the DEFxxx and _DEFINE statements. The QB64 types can only be defaulted using _DEFINE.
type can be any of the types listed at the top and can also be preceeded with _UNSIGNED for the unsigned version of the type.
variable is the name of the variable to be defined in the DIM statement.
More information:
More information on this page: Data types