Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Концепция типа данных. Соглашения о совместимости и приведение типов

Читайте также:
  1. II. Характеристика отдельных типов половых гормонов.
  2. V1: Современная концепция менеджмента качества
  3. V2: Концепция маркетинга и ее роль в рыночной экономике.
  4. VI. ФИЛОСОФСКАЯ КОНЦЕПЦИЯ ПАМФИЛА ЮРКЕВИЧА
  5. А) Христианская концепция истории
  6. Алфавит, базовые типы и описание данных.
  7. Анализ и оценка типов общественного воспроизводства
  8. Анализ некоторых типов религиозного опыта
  9. АНАЛИЗ ТИПОВ КОММУНИКАЦИИ
  10. Арбитражные соглашения

Концепция типов данных состоит в том, что каждой информации приписывается тип, который описывается:

1) множеством допустимых значений типа,

2) набором операций для этого типа,

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

4) количеством памяти, необходимой для хранения данного типа.

Тип данных определяет допустимые действия над данными.

Все встроенные типы C# однозначно отображаются, а фактически совпадают с системными типами каркаса Net Framework, размещенными в пространстве имен System. Поэтому всюду, где можно использовать имя типа, например, — int, с тем же успехом можно использовать и имя System.Int32.

В программировании переменной одного типа часто присваивается значение переменной другого типа. Например, как показано в следующем фрагменте программы, мы могли бы присвоить переменной типа float значение типа int.

int i; float f;

i = 10; f = i; // float-переменной присваивается int-значение.

Если в инструкции присваивания смешиваются совместимые типы, значение с правой стороны (от оператора присваивания) автоматически преобразуется в значение "левостороннего" типа. Таким образом, в предыдущем фрагменте программы значение, хранимое в int-переменной i, преобразуется в значение типа float, а затем присваивается переменной f. Но, поскольку в С# не все типы совместимы и действует строгий контроль типов, не все преобразования типов разрешены в неявном виде. Например, типы bool и int несовместимы. Тем не менее с помощью операции приведения типов все-таки возможно выполнить преобразование между несовместимыми типами. Приведение типов — это выполнение преобразования типов в явном виде.

При присвоении значения одного типа данных переменной другого типа будет выполнено автоматическое преобразование типов, если: эти два типа совместимы; тип приемника больше (т.е. имеет больший диапазон представления чисел), чем тип источника.

При соблюдении этих двух условий выполняется преобразование с расширением, или расширяющее преобразование. Например, тип int — достаточно "большой" тип, чтобы сохранить любое допустимое значение типа byte, а поскольку как int, так и byte — целочисленные типы, здесь может быть применено автоматические преобразование. Для расширяющих преобразований числовые типы, включая целочисленные и с плавающей точкой, совместимы один с другим. Например, преобразование типов из long в double является расширяющим, которое выполняется автоматически.

double D; long L;

L = 100123285L; D = L;

Несмотря на возможность автоматического преобразования типов из long в double, обратное преобразование типов (из double в long) автоматически не выполняется, поскольку это преобразование не является расширяющим.

Несмотря на большую пользу автоматического преобразования типов оно не в состоянии удовлетворить все нужды программирования, поскольку реализуется только при расширяющем преобразовании между совместимыми типами. Во всех остальных случаях приходится применять приведение к типу. Приведение к типу — это явно заданная инструкция компилятору преобразовать один тип в другой. Инструкция приведения записывается в следующей общей форме:

(тип_приемника) выражение

Здесь элемент тип_приемника определяет тип для преобразования заданного выражения. Например, если вам нужно, чтобы выражение х/у имело тип int, напишите следующие программные инструкции:

double х, у; (int) (х / у);

В этом фрагменте кода, несмотря на то, что переменные х и у имеют тип double, результат вычисления заданного выражения приводится к типу int. Круглые скобки, в которые заключено выражение х / у, обязательны. В противном случае (без круглых скобок) операция приведения к типу int была бы применена только к значению переменной х, а не к результату деления. Для получения результата желаемого типа здесь не обойтись без операции приведения, поскольку автоматического преобразования из типа double в int не существует.

Если приведение приводит к сужающему преобразованию, возможна потеря информации. Например, в случае приведения типа long к типу int информация будет утеряна, если значение типа long больше максимально возможного числа, которое способен представить тип int, поскольку будут "усечены" старшие разряды long-значения. При выполнении операции приведения типа с плавающей точкой к целочисленному будет утеряна дробная часть простым ее отбрасыванием. Например, при присвоении переменной целочисленного типа числа 1,23 в действительности будет присвоено число 1. Дробная часть (0,23) будет утеряна.

// Приведение типа byte к типу char.

b = 88; // ASCII-код для буквы X.

ch = (char) b;

 




Дата добавления: 2014-12-18; просмотров: 74 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав