Help Center
Help CenterFreeBASIC

Castkeyword

Converts an expression to a specified data type

Converting Data Typeskeyworddocumented

Syntax

Cast( datatype, expression )

Parameters

NameDescription
datatypea built-in data type (standard type)
expressiona variable of another built-in data type

Description


Converts expression into a different datatype. Useful to be used in macros when datatype is unknown and also when converting to Type Alias.

This is a general form of conversion operators such as CInt or CDbl.
Cast is more versatile because it can be used on built-in types that have a built-in Cast Operator, but don't have a built-in keyword for it: e.g. Cast( Byte, boolean ).
It is also suitable for use in cases where the type of a variable is not fixed in the code - for example, it might be Defined earlier, or may be the Type Of a different variable or expression.

Note: If you want to use an operator specifically for converting to different types of Pointers, consider using CPtr instead.

Upcasting: In an inheritance structure, the upcasting is converting a derived type reference or pointer into a base type.
In this special use, Cast applied on a derived-type instance (expression) can be used to return a base-type (datatype) reference.

By using a member Operator Cast, Cast can be overloaded for a user defined type expression.

Remarks

Dialect Differences


  • Not available in the -lang qb dialect unless referenced with the alias __Cast.

Differences from QB


  • New to FreeBASIC

See also



Example


'' will print -128 because the integer literal will be converted to a signed Byte

'' (this Casting operation is equivalent to using CByte)

Print Cast( Byte, &h0080 )



'' will print 3 because the floating-point value will be converted to an Integer

'' (this Casting operator is equivalent to using CInt)

Print Cast( Integer, 3.1 )



Sleep

'' macro sizeofDerefPtr(): returns the size of the dereferenced pointer

#define sizeofDerefPtr(ptrToDeref) SizeOf(*Cast(TypeOf(ptrToDeref), 0))



'' macro typeofDerefPtr(): returns the type of the dereferenced pointer

#define typeofDerefPtr(ptrToDeref) TypeOf(*Cast(TypeOf(ptrToDeref), 0))





' Allocate dynamically memory for a Double by New

Dim As Double Ptr pd

pd = New typeofDerefPtr(pd)

*pd = 3.14159

Print *pd



' Allocate dynamically memory for a Zstring*10 by Callocate

Dim As ZString Ptr pz

pz = CAllocate(10, sizeofDerefPtr(pz))

*pz = "FreeBASIC"

Print *pz



Sleep

Delete pd

Deallocate(pz)

Reference

  • Documented in KeyPgCast.html