Wiki source for KeyPgTypeof


Show raw source

{{fbdoc item="title" value="TYPEOF"}}----
Returns the type of a variable.

{{fbdoc item="syntax"}}##
**Typeof** ( //variable// | //datatype// )
##
{{fbdoc item="param"}}
##//variable//##
A variable of any type.
##//datatype//##
A [[DataType|DataType]].

{{fbdoc item="desc"}}
##**Typeof**## is a compiler intrinsic that replaces itself with the type of the variable passed to it. It can either be used in a variable declaration (Example 1) or it can be used in the preprocessor for comparison, printing. (Example 2)

##**Typeof**## also supports passing any intrinsic data type, or user-defined type, not only variables defined as those types. Also supported are expressions, the type is inferred from the expression (much like ##[[KeyPgVar|Var]]##).

When a variable from a given namespace is accessed with the namespace's name prefix, wrap the argument to ##**Typeof**## with parentheses to force it to be seen as an expression. For example ##Typeof((namespace_name.variable))##.


If there is both a user defined type and a variable visible with the same name in the current scope, the user defined type takes precedence over the variable. To ensure that the ##**Typeof**## takes the variable instead of the user defined type, wrap the argument to ##**Typeof**## with parentheses to force it to be seen as an expression. For example ##Typeof((variable))##.

{{fbdoc item="ex"}}
Example 1:
{{fbdoc item="filename" value="examples/manual/misc/typeof1.bas"}}%%(freebasic)
Dim As Integer foo
Dim As TypeOf(67.2) bar '' '67.2' is a literal double
Dim As TypeOf( foo + bar ) teh_double '' double + integer results in double
Print SizeOf(teh_double)
%%
Example 2:
{{fbdoc item="filename" value="examples/manual/misc/typeof2.bas"}}%%(freebasic)
Dim As String foo
#print TypeOf(foo)
#if TypeOf(foo) = TypeOf(Integer)
#print "Never happened!"
#endif

#if TypeOf(foo) = TypeOf(String)
#print "It's a String!"
#endif
%%

{{fbdoc item="lang"}}
- Not available in the //[[CompilerOptlang|-lang qb]]// dialect unless referenced with the alias ##**""__Typeof""**##.

{{fbdoc item="diff"}}
- New to ""FreeBASIC""

{{fbdoc item="see"}}
- ##[[KeyPgSizeof|Sizeof]]##
- ##[[KeyPgVar|Var]]##
- ##[[KeyPgTypeAlias|Type (Alias)]]##
- ##[[KeyPgType|Type...End Type]]##

{{fbdoc item="back" value="CatPgMisc|Miscellaneous"}}
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki



sf.net phatcode