русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Присвоение значений


Дата добавления: 2015-06-12; просмотров: 629; Нарушение авторских прав


Такие ситуации неоднократно применялись в этой лекции для иллю­страции видов преобразования. Приведение может потребоваться, если переменной одного типа присваивается значение другого типа. Возможны следующие комбинации.

Если сочетание этих двух типов образует запрещенное приведение, возникнет ошибка. Например, примитивные значения нельзя присваи­вать объектным переменным, включая следующие примеры;

// пример вызовет ошибку компиляции

// примитивное значение нельзя // присвоить объектной переменной

parent р = 3;

// приведение к классу-"обертке" также запрещено Long a=5L;

// универсальное приведение к строке // возможно только для оператора + String s=true;

Далее, если сочетание этих двух типов образует расширение (прими­тивных или ссылочных типов), то оно будет осуществлено автоматичес-01^ неявным для разработчика образом:

lnti=10;

long a=i;

Child с = new ChlldO;

Parent p=c;

Если же сочетание оказывается сужением, то возникает ошибка компиляции, такой переход не может быть проведен неявно:

// пример вызовет ошибку компиляции

inti=10;

short s=i; // ошибка! сужение!

Parent р = new ChildO;

Child c=p; // ошибка! сужение!

Как уже упоминалось, в подобных случаях необходимо выполнять преобразование явно:

inti=10; short s=(lnt)l; Parent р = new Chlld(); Child c=(Chlld)p;

Более подробно явное сужение рассматривается ниже. Здесь может вызвать удивление следующая ситуация, которая не по­рождает ошибок компиляции:

byteb=1; short S=2-H3; Char c=(byte)5-i-'a';

в первой строке переменной типа byte присваивается значение цело, численного литерала типа int, что является сужением. Во второй строке переменной типа short присваивается результат сложения двух литералов типа int, а тип этой суммы также int. Наконец, в третьей строке переменной типа char присваивается результат сложения числа 5, приведенного ^ типу byte, и символьного литерала.



Однако все эти примеры корректны. Для удобства разработчика компилятор проводит дополнительный анализ при присвоении значении переменным типа byte, short и char. Если таким переменным при­сваивается величина типа byte, short, char или int, причем ее значение может быть получено уже на момент компиляции, и оказывается, что это значение укладывается в диапазон типа переменной, то явного приведения не требуется. Если бы такой возможности не было, пришлось бы пи­сать так:

byte b=(byte)1; // преобразование необязательно short s=(short)(2+3); // преобразование необязательно char c=(char)((byte)5+'a'); // преобразование необязательно

// преобразование необходимо, так как // число 200 не укладывается в тип byte byte b2-(byte)200;



<== предыдущая лекция | следующая лекция ==>
Применение приведений | Вызов метода


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.478 сек.