Слайд 2В C++ различают явное и неявное преобразование типов данных.
Неявное преобразование типов данных
выполняет компилятор С++.
Явное преобразование данных выполняет сам программист.
Результат любого вычисления будет преобразовываться к наиболее точному типу данных, из тех типов данных, которые участвуют в вычислении.
Для наглядного примера представлю таблицу с преобразованиями типов данных. В таблице рассмотрим операцию деления. В качестве целочисленного типа данных возьмем int, ну и вещественный тип данных у нас будет float.
Слайд 4При неявном преобразовании меняя переменные различных типов данных местами, результат остается тот же (в
нашем случае это делимое и делитель).
Что же касается явного преобразования, то оно необходимо для того чтобы выполнять некоторые манипуляции, тем самым меняя результат вычисления.
Слайд 5Еще один способ явного преобразования типов данных:
Слайд 6В С++ также предусмотрена унарная операция приведения типа:
static_cast*тип данных*/>(/*переменная или число*/)
Пример: static_cast(15)/2 результат равен
7.5
Пример с переменной:
int ret=15;
static_cast(ret)/2 //результат равен 7.5
В случае с переменной надо понимать, что в строке 2 переменная ret не преобразуется в тип данных float, а всего лишь создается временная копия переменной ret с типом данных float.
Слайд 7Рассмотрим на практике все способы явного и неявного преобразования типов данных.
Слайд 8В строке 5 подключена библиотека манипуляций ввода/вывода , эта библиотека нужна для использования различных манипуляторов, в
нашем случае — fixed setprecision(). В строке 10 специально созданы две переменные типа int, аналогично создал две переменный типа float в строке 11, эти переменные нужны будут для преобразования их значений в другие типы данных. В строке 12 после оператора cout и операции сдвига в поток вывода << стоят два манипулятора fixed и setprecision(). Манипулятор fixed — это не параметризированный манипулятор, так как никаких параметров не принимает, пишется без круглых скобок. Данный манипулятор применяется в паре с параметризированным манипулятором setprecision() и выполняет фиксированное отображение разрядов после запятой. А манипулятор setprecision() отображает количество знаков после запятой, причём то, которое указано в скобочках. В строках 13, 14, 15, 16 показаны примеры неявного преобразования типов данных, эти примеры взяты из таблицы 1. В строках 17, 18 показан один из способов явного преобразования данных. Суть такого способа заключается в том, что нужно дописать запятую и нуль к целому числу.