# Basic Types: booleans, numbers, and strings¶

Chapel supports a variety of basic types to represent logical values, numbers, and strings. Specifically, these types provide support for:

• Boolean values;

• Signed and unsigned integers;

• Real, imaginary, and complex floating point values; and

• Strings.

These types, along with the `void` type (not covered in this section), are known as Chapel’s primitive types. In previous sections, we’ve seen simple uses of string and integer types and values.

## Bit-Widths¶

Chapel’s boolean and numeric types are each supported in a variety of bit-widths which specify how much memory to use for their representation. For the numeric types, it also governs the range/accuracy of the values that the type can represent.

For example, `int(8)` specifies an 8-bit integer, capable of storing values from -128 through 127, while `int(64)` specifies a 64-bit integer, capable of storing values from -9,223,372,036,854,775,808 (-263) through 9,223,372,036,854,775,807 (263 - 1).

These types also have a default size that is used when no bit-width is specified. For example, integers default to 64 bits, permitting `int(64)` to simply be written as `int`, as in previous examples.

Since Boolean values only require a single bit of data, the use of different bit-widths for the `bool` type only affects memory usage and layout, not program semantics. The default bit-width for the `bool` type is implementation-dependent.

## Basic Type Summary¶

The following table summarizes each of the basic types, indicating its role and default value, along with its supported bit widths and default bit width, when applicable.

Type

Description

Default Value

Legal Bit-Widths

Default Bit-Width

`bool`

logical value

false

8, 16, 32, 64

implementation-dependent

`int`

signed integer value

0

8, 16, 32, 64

64

`uint`

unsigned integer value

0

8, 16, 32, 64

64

`real`

real floating-point value

0.0

32, 64

64

`imag`

imaginary floating-point value

0.0i

32, 64

64

`complex`

complex floating-point value

0.0 + 0.0i

64, 128

128

`string`

character string

“”

N/A

N/A