Любой новый простейший тип определяется простым перечислением входящих в него различных значений. Такой тип называется перечисляемым. Его определение, например, на языках Си/Си++, имеет следующий вид:
Имена в перечислении Seasons – целые константы: winter = 0, spring = 1 и т.д.
enum days { Su = 5, Mo, Tu, We = 11, Th, Fr, Sa };
К простейшим стандартным типам относятся целые числа, логические значения, символы, вещественные числа.
ЭВМ оперирует с числами, содержащими конечное число разрядов. Возможны следующие типы чисел:
Целые двоичные числа длиной 8,16 и 32 и двоично-кодированные десятичные числа длиной 8 бит. Двоичные числа допускают интерпретацию как целых без знака и целых со знаком, а десятичные числа знака не имеют. В двоичных целых числах без знака все разряды считаются значащими и диапазон представляемых чисел составляет 0…255 для чисел длиной 8 бит и 0…65535 для чисел длиной 16 бит.
Все разряды числа являются значащими, а двоичная точка находится справа или, как говорят, фиксирована после младшего значащего разряда. Отсюда появляется еще одно название этого формата и других аналогичных форматов – формат с фиксированной точкой. Следовательно, в этом формате представимы только целые числа 0, 1, 2, ..., 2n–1 и любая комбинация битов (двоичный набор) является допустимой.
Среди стандартных типов языков программирования может быть целый набор целочисленных типов, например, в Си/Си++:
char k1; // знаковый символьный тип (целочисленный)
int a; // знаковый целый тип
int b, c; // знаковый целый тип
Переменные беззнаковых типов должны быть явно указаны как беззнаковые:
unsigned char k2; // беззнаковый символьный тип (1 байт)
unsigned int d; // беззнаковый целый тип (2 – 4 байта, в зависимости от разрядности ЭВМ)
unsigned e; // беззнаковый целый тип
unsigned long int a1; // беззнаковый длинный целый тип ( не короче 4-х байт)
unsigned long a2; // беззнаковый длинный целый тип
unsigned short int s1; // беззнаковый короткий целый тип (не длиннее 2-х байт)
unsigned short s1; // беззнаковый короткий целый тип
Символьные типы языков Си/Си++ также являются целочисленными и имеют размер в 1 байт.
Целые знаковые двоичные числа. Чтобы компьютеры могли оперировать положительными и отрицательными числами, один из разрядов необходимо отвести для изображения знака чисел S. Обычно им является старший (левый) бит, а стандартное кодирование имеет такой вид: S=0 – число положительное; S=1 – число отрицательное.
В языках Си/Си++ знаковые типы могут быть явно указаны:
signed char k1; // знаковый символьный тип
signed int a; // знаковый целый тип
но в большинстве случаев в этом нет необходимости:
char k1; // знаковый символьный тип
int b, c; // знаковый целый тип (слово signed можно не указывать)
long int alpha; // знаковый длинный целый тип
long beta; // знаковый длинный целый тип (слова int можно не указывать)
short int gamma; // знаковый короткий целый тип
short delta; // знаковый короткий целый тип
Для новых 64-разрядных процессоров семейства x86 в некоторых версиях языка Си++ используется 64-разрядный целочисленный тип int64.