C++ has four fundamental types to represent integers of different sizes:
`char`

, `short`

, `int`

, and `long`

.
For each of these types, there is a corresponding
`unsigned`

type to represent unsigned integer with the same number
of bits as the plain (`signed`

) type.
It is required that `unsigned`

integers obey the laws of
arithmetic modulo 2^n, where n is the number of bits in the
representation (see Section 3.6.1 of [Ellis-Stroustrup90]).
However, the signed types have an infinite number of abstract values,
most of which are not representable on a computer.
One has to use range assertions (e.g., `inRange`

or comparisons
to such limits as `INT_MIN`

and `INT_MAX`

)
if one wishes to ensure that the abstract value is representable.

In this section we describe the abstract values of C++ integer types,
by giving the traits used to model them in Larch/C++.
The common foundation for the various integer traits
is the trait `Integer`

found in the LSL Handbook
(Appendix A of [Guttag-Horning93]).
This trait defines unbounded integers
with usual integer operations (`+`

, `-`

, `*`

, `div`

,
`mod`

, etc.).

See section 4.13 Literals for the syntax of literals that denote abstract values of the sorts specified here.

- Signed Trait
- Short Integer Trait
- Long Integer Trait
- Char Trait
- int Trait
- Unsigned Integer Trait
- Summary of Trait Functions for Integer Traits

Go to the first, previous, next, last section, table of contents.