C++ has four fundamental types to represent integers of different sizes:
For each of these types, there is a corresponding
unsigned type to represent unsigned integer with the same number
of bits as the plain (
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
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 (
See section 4.13 Literals for the syntax of literals that denote abstract values of the sorts specified here.
Go to the first, previous, next, last section, table of contents.