Boolean

Standard data type

Syntax
   Dim variable As Boolean

Description
   Boolean data type. Can hold the values True or False
   Default value on initialization is False

   Notes on definition of boolean data type:
      - Ideally, the definition of the boolean data type is that it holds 
      the value of True or False, and that's it. However, to make this 
      concept a reality, we need a definition that uses real world 
      connections.
      - A more realistic definition is that the boolean data type is a 
      1-bit integer, having the value 0 to indicate False and 1 to indicate 
      True.
      - For a practical definition, we must consider, yet again, additional 
      factors. The most significant factor is that the hardware (processor) 
      on which code is executed does not directly support a 1-bit data 
      type; the smallest register or memory size we can work with is 8-bits 
      or 1-byte.
      - Assume "false" is 0 in both C/C++ and FB.  C/C++ has logical 'not' 
      operator '!' such that '!0' produces '1'.  FB has a bitwise Not 
      operator such that 'not 0' produces '-1'.
      - Nevertheless the definition under the hood for a FB boolean remains 
      an 1-bit integer, zero extended to fill larger integer types.
      - Therefore when assigning a boolean with an integer value (by 
      implicit conversion and not with the False or True value), '0' 
      induces the False state and '1' or '-1' induces the True state (any 
      other value also induces the True state, but with a warning message).
      - Otherwise when assigning a numeric type with a boolean (by implicit 
      conversion), False induces the '0' value and True induces the '-1' 
      value.
      - However, the purpose and intent of the boolean data type remains, 
      that it should only ever hold a True value or False value, regardless 
      of the underlying details.

Example
   Dim boolvar As Boolean
   boolvar = True
   Print "boolvar = ", boolvar

   Output:

   boolvar =     True

Version
   * Since fbc 1.04.0

Dialect Differences
   * Not available in the -lang qb dialect unless referenced with the 
     alias __Boolean.

Differences from QB
   * New to FreeBASIC

See also
   * CBool
   * True
   * False
   * Table with variable types overview, limits and suffixes

