Type conversion - chung-leong/qb GitHub Wiki

The majority of operators in PHP+QB expect operands belonging to the same primitive type. When there is a mismatch, type conversion occurs. For instance, if $a is int32 and $b is float32, when you add the two, $a must be converted to float32 first.

Typically, "lower rank" types are converted to "higher rank" types. Types with less precisions and/or range are promoted to those with greater precision and range in order to preserve both. Primitive types in QB are ranked in accordance with the following rules:

  • A wider type ranks above a narrower type (e.g. int64 > int32)
  • Floating points rank higher than any integer type (e.g. float32 > int64)
  • Unsigned integers rank higher than signed integer of the same size (e.g. uint32 > int32)

The order from highest to lowest is thus:

  • float64
  • float32
  • uint64
  • int64
  • uint32
  • int32
  • uint16
  • int16
  • uint8
  • int8
⚠️ **GitHub.com Fallback** ⚠️