русс | укр

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

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

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

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


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

Приведение типов


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


В С++ предусмотрена возможность явно установить для выражения заданный тип данных. Наиболее универсальное средство для этого – операция приведения типа, унаследованная от языка C, которая имеет вид

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

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

#include <iostream>

int main()

{

std::cout << 1/3 << endl; // endl = '\n' - конец строки

std::cout << (float) 1/3 << endl;

return 0;

}

Результат:

0.333333

Приведение данных – потенциально опасная операция. Если тип данных назначения не может принять приводимое значение, то результат преобразования будет непредсказуемым и приведёт к потере данных. Например, приведение значения типа char к значению типа int всегда безопасно, а обратная операция – нет. Приведение к типу char значения 12345, которое выходит за допустимый для char диапазон, даст неопределенный результат, зависящий от реализации компилятора.

В C++ кроме вышеописанной операции для приведения типов добавлены несколько новых операций: dynamic_cast, static_cast, reinterpret_cast, const_cast.

Все приведённые операции имеют одинаковый синтаксис:

операция<целевой_тип>(выражение)

Операция dynamic_cast предназначена для динамического приведения типов во время выполнения программы. В ней целевой тип должен быть указателем или ссылкой и в результате выполнения операции выражение получит тип указателя или ссылки. Работа с указателями будет рассмотрена позднее.

Операция const_cast служит для явной подмены описателя const. Целевой тип должен совпадать с типом выражения за исключением модификатора const. Чаще всего операция используется с целью лишить выражение описателя const.



Операция reinterpret_cast служит для преобразования указателя одного типа в указатель другого типа, а также позволяет приводить указатель к целому типу и целый тип – к указателю.

Операция static_cast по сути заменяет традиционную операцию приведения типов (тип) выражение, унаследованную от C.



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


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


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

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

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


 


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

 
 

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

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