Преобразование типа данных в смешанной операции C++

В выражениях есть два типа преобразования типов:

Неявные и явные преобразования.

1. Неявное преобразование

Арифметические операторы, операторы отношения, логические операторы, побитовые операторы и операторы присваивания — это бинарные операторы, для которых требуется одинаковый тип двух операндов.

В арифметических операциях и реляционных операциях, если типы операндов, участвующих в операции, несовместимы, система компиляции произведет автоматическое преобразование данных, то есть неявное преобразование.

Основы: преобразование данных низкого типа в данные высокого типа.

Низкий --------------------> Высокий

char короткое целое без знака   

длинное беззнаковое длинное число с плавающей запятой   

двойной

Логические операторы требуют, чтобы операнды, участвующие в операции, были типа bool, если нет, то

Ненулевые данные преобразуются в истинные, 0 преобразуются в ложные.

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

Операция присваивания требует, чтобы типы lvalue и rvalue были одинаковыми, и система компиляции автоматически выполнит преобразование типов, но правило состоит в том, чтобы всегда преобразовывать rvalue в тип lvalue.

поплавок fVal;

двойной вал;

интервал iVal;

беззнаковый длинный ulVal;

dVal=iVal*uVal;//iVal преобразуется в unsigned long,

//Результат операции умножения преобразуется в double

dVal=ulVal+fVal;//ulVal преобразуется в число с плавающей запятой,

//Результат операции сложения преобразуется в double

2. Отображение переходов

Эффект преобразования типа отображения заключается в преобразовании типа результата выражения в другой указанный тип.

(1)

спецификатор типа (выражение)

(спецификатор типа) выражение

Вышеуказанные две формы различны, но функция одна и та же.

пример:

float z = 7,56, дробная часть;

целая часть;

wholePart=int(z);//При преобразовании типа float в тип int

// Берем целую часть и отбрасываем десятичную часть

FractionPart=z-(int)z;//вычтем из z целую часть,

// получаем десятичную часть

(2)

4 типа операторов преобразования:

static_cast, dynamic_cast,

const_cast, переинтерпретировать_cast

Грамматическая форма:

dynamic_cast<спецификатор типа>(выражение)

const_casy<спецификатор типа>(выражение)

reinterpret_cast<спецификатор типа>(выражение)

static_cast<спецификатор типа>(выражение)

Последние три типа функций могут быть описаны грамматикой (1).

static_cast подходит для преобразования между базовыми типами данных, например, int(z) и (int)z в приведенном выше примере можно заменить на static_cast<int>(z)

Уведомление:

Явные преобразования типов могут быть небезопасными (потеря точности)

Этот переход временный, разовый

 

---------- Заметки по изучению языка C++----------

Guess you like

Origin blog.csdn.net/m0_57781693/article/details/129777997
C++
Recommended