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 |