русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Перетворення типів


Дата додавання: 2014-04-22; переглядів: 1141.


Ми вже знаємо, що операція присвоєння = використовується для присвоєння значення змінної певного типу змінній того ж типу, причому це може бути як основний тип, так і тип, визначений користувачем. Але що трапиться, коли з різних сторін знаку = записані змінні різних типів? Насправді це досить складне питання, яким і займемося. Спершу розглянемо, як компілятор виконує перетворення основних типів, яке відбувається автоматично. Потім пояснимо кілька ситуацій, де компілятор не виконує автоматичного перетворення і ми самі повинні визначити його дії. В ці ситуації включені перетворення між основними і визначеними користувачем типами та перетворення між різними типами, визначеними користувачем.

У таких мовах, як Паскаль, здійснені спроби вивільнити розробника від необхідності проробляти подібні перетворення. Однак філософія С++ - це гнучкість, надана можливістю здійснювати всеможливі перетворення.

 

Перетворення основних типів у основні типи

Коли ми пишемо рядок типу

intvar=floatvar;

де intvar – змінна цілого типу, а floatvar – змінна дійсного типу, то передбачаємо, що компілятор викличе спеціальну функцію для перетворення значення змінної floatvar, яка має формат числа з плаваючою крапкою, в формат цілого числа. Звичайно, існує багато таких перетворень: з float в double, з char у float та інші. Кожне таке перетворення має свою процедуру, вбудовану у компілятор, яка відкривається в залежності від типів змінних, які проставлені з обох сторін знаку =. Ми кажемо, що ці перетворення неявні, оскільки вони не відображаються у лістінгу.

Інколи ми хочемо змусити компілятор перетворити один тип у інший. Далі представлена невеличка програма, де тип float примусово перетворюється в int.

#include <iostream.h>

#include<bios.h>

#include<conio.h>

int main()

{clrscr();

float a=1.62;

int b;

b=(int)a;

cout<<"a="<<a<<" b="<<b;

bioskey(0);

return 0;

}

Перетворення здійснює оператор b=(int)a; у деяких версіях С++ з цією метою передбачений спеціальний оператор static_cast. У цьому випадку ми здійснюємо явне перетворення, але воно використовує ті ж вбудовані процедури, що й неявне.

 


<== попередня лекція | наступна лекція ==>
Операція індексації масиву | Перетворення об’єктів у основні типи і навпаки


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн