Integers

There are four signed integer types, and four unsigned integer types:

Type Length Minimum Value Maximum Value
Int8 8 -128 127
Int16 16 −32,768 32,767
Int32 32 −2,147,483,648 2,147,483,647
Int64 64 −263 263 - 1
UInt8 8 0 255
UInt16 16 0 65,535
UInt32 32 0 4,294,967,295
UInt64 64 0 264 - 1

An integer literal is an optional + or - sign, followed by
a sequence of digits and underscores, optionally followed by a suffix.
If no suffix is present, the literal’s type is the lowest between Int32, Int64 and UInt64
in which the number fits:

  1. 1 # Int32
  2. 1_i8 # Int8
  3. 1_i16 # Int16
  4. 1_i32 # Int32
  5. 1_i64 # Int64
  6. 1_u8 # UInt8
  7. 1_u16 # UInt16
  8. 1_u32 # UInt32
  9. 1_u64 # UInt64
  10. +10 # Int32
  11. -20 # Int32
  12. 2147483648 # Int64
  13. 9223372036854775808 # UInt64

The underscore _ before the suffix is optional.

Underscores can be used to make some numbers more readable:

  1. 1_000_000 # better than 1000000

Binary numbers start with 0b:

  1. 0b1101 # == 13

Octal numbers start with a 0o:

  1. 0o123 # == 83

Hexadecimal numbers start with 0x:

  1. 0xFE012D # == 16646445
  2. 0xfe012d # == 16646445