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

Явное приведение типа

V) Массивы и функции | Объединения (union). | Как это работает | Проверка – Передача по значению |


Читайте также:
  1. Приведение в соответствие ресурсов GE
  2. Приведение модели к требуемому уровню нормальной формы
  3. Приведение сетевого графика к заданному сроку строительства
  4. ПРИВЕДЕНИЕ СНАРЯДОВ В ОКОНЧАТЕЛЬНО СНАРЯЖЕННЫЙ ВИД

В смешанных выражениях, содержащих основные типы, компилятор автоматически организует приведение типов там, где необходимо, но мы можем также насильно вызвать преобразование из одного типа в другой, используя явное приведение типов (explicit cast). Для того, чтобы привести значение выражения к заданному типу, мы пишем:

static_cast<the_type_to_convert_to>(expression)

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

Вот пример использования static_cast<>():

double value1 = 10.5;double value2 = 15.5;int whole_number = static_cast<int>(value1) + static_cast<int>(value2);

Заметим, что операция явного приведения типа не изменяет значений переменных value1 и value2 (используется временная память). Хотя в нашем случае информация и теряется, но компилятор “предполагает”, что программист знает, что делает, когда применяет явное приведение типов.

Мы можем написать явное приведение типа к любому стандартному типу, но нужно осознавать возможную потерю информации. Если мы приводим float или double к long, например, то потеряем дробную часть. Если double к float, то будет потеря точности, поскольку переменная типа float имеет точность 7 цифр, а double - 15. Даже в случае преобразования типов в применении к целочисленным типам содержит потенциальную угрозу потери данных, в зависимости от используемого диапазона значений. Например, значение типа long может превысить максимум, допустимый для типа short, так что переход от long к short может быть некорректным.

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

C++ имеет еще три других вида операций приведения типов, но не таких общих, как static_cast<>():


Дата добавления: 2015-11-16; просмотров: 46 | Нарушение авторских прав


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

mybiblioteka.su - 2015-2024 год. (0.005 сек.)