Типы данных

Тип данных характеризует основные свойства данных: возможные действия с данными, их внутреннее представление, диапазон допустимых значений, размер.

Все типы данных условно можно подразделить на простые (обычно это встроенные типы) и структурированные (структуры, классы).

В языке C# все простые типы и структуры относятся к значащим типам (в переменных таких типов непосредственно хранятся значения данных соответствующих типов), а классы — к ссылочным типам. Память для переменных значащих типов выделяется в стеке, для ссылочных объектов — в «общей куче» (heap). Работа со стековой памятью ведётся значительно быстрее, чем с памятью в heap. Память под объекты в «куче» выделяется с помощью операции new, а вот освобождать такую память в программе не требуется, так как этим занимается специальная программа — «сборщик мусора». Причём, освобождает ненужную память эта программа не сразу, а через некоторое время, руководствуясь своим особым алгоритмом, повлиять на который программист не может.

Рассмотрим подробнее простые типы, к которым относятся целые типы, вещественные, символьные, логические, но предварительно обратим внимание на одну особенность языка C#.

Встроенные типы языка C# имеют фиксированный размер, определённый стандартом языка. В отличие от языков C/C++, в которых, например, тип int зависит от разрядности операционной системы и компилятора, в языке C# размер типов не зависит от платформы.

Целые типы

Целые типы данных предназначены для хранения целых чисел. Все целые типы можно подразделить на знаковые и беззнаковые.

В таблице ниже приведены все знаковые целые типы и их основные характеристики:

Тип

Размер, байт

Диапазон допустимых значений

sbyte

1

-128 … 127

short

2

-32768 … 32767

int

4

-2147483648 … 2147483647

long

8

-9223372036854775808 … 9223372036854775807

Примеры объявления переменных целых знаковых типов:

sbyte y;    short t;    int x;    long r;

А в этой таблице приведены все беззнаковые типы данных:

Тип

Размер, байт

Диапазон допустимых значений

byte

1

0 … 255

ushort

2

0 … 65535

uint

4

0 … 4294967295

ulong

8

0 … 18446744073709551615

Примеры объявления переменных целых беззнаковых типов:

byte a;    ushort b;    uint k;    ulong j;

Для целых типов допустимы следующие группы операций:

Возможно автоматическое преобразование от менее мощного к более мощному типу, но не наоборот.

Например:

int i = 3;

short k = 2;

i = k;         // это допустимо

k = i;         // так нельзя, будет сообщение об ошибке

k = (short) i; //а так можно - выполняем явное преобразование

Вещественные типы

Для работы с действительными числами в языке C# имеется два вещественных типа: float (одинарная точность) и double (удвоенная точность). Приведем краткую характеристику этих типов:

Тип

Размер, байт

Диапазон возможных

значений (по модулю)

Точность (количество

десятичных цифр)

float

4

10-45 … 1038

7

double

8

10-324 … 10308

15

Примеры объявления переменных вещественных типов:

float x;    double y;

Для вещественных типов допустимы следующие группы операций:

Тип decimal

Этот тип специально создан для выполнения денежных расчётов. Обеспечивает точность до 29 десятичных цифр (деньги любят счёт!). Диапазон возможных значений (по модулю) от 10-28 до 1028. Под переменные этого типа отводится 16 байт. Пример объявления переменной этого типа:

decimal m;

Символьный тип

Для хранения отдельных символов используется тип char. Так как в языке C# для кодирования символов используется Unicode, то под каждый символ отводится 2 байта. Пример объявления переменной этого типа:

char c;

Логический (булевый) тип

Для работы с логическими величинами используется тип bool. Допустимы два значения: true (истина) и false (ложь). Пример объявления переменной логического типа:

bool p;

Для данных логического типа допустимы операции проверки на равенство и неравенство.

Следует иметь ввиду, что для булевого типа в C# запрещены какие-либо преобразования в целые типы.

Назад
На верх
Вперёд
Hosted by uCoz