Как использовать неявные и явные приведения?
Возможный дубликат:
Определите неявное приведение и явное приведение
int a = 2, b = 3;
float f = 2.5;
double d = -1.2;
int int_result;
float real_result;
real_result = a * f;
real_result = (float) a * b;
d = a + b / a * f;
d = f * b / a + a;
3 ответа
Неявное приведение: real_result = a * f;
Явное приведение: real_result = (int) (a * f);
Я объясню одно из выражений в вашем посте:
Выражение: real_result = a * f;
- В ролях от int -> double
- Рассчитать результат: a * f
- Преобразуйте результат a * f из double в int, затем установите значение real_result
Поскольку тип real_result имеет тип int, может быть маленьким для сохранения результата * f (double) -> в вашей программе может быть логическая ошибка (потеря информации).
Некоторые компиляторы отображают предупреждение, чтобы заметить вашу ошибку логики, если вы уверены в логике своего выражения, вы можете сказать компилятору прервать это предупреждение, используя явное приведение:
real_result = (int) (a * f);
Если нет потери информации, компилятор будет продвигать ваш тип данных:
int a=3;
float b=a; //b=3.0f
Если есть потеря информации, компилятор должен понизить с предупреждением:
float b=4.3;
int a=b; //a=4
[
short a=2000;
int b;
b = (int) a; // c-like cast notation
b = int (a); // functional notation
] 1
int a = 2, b = 3;
поплавок f = 2,5;
двойной d = -1,2;
int int_result;
float real_result;
real_result = a * f; / * Здесь неявное приведение применяется компилятором к переменной a. Где переменная a сначала повышается до неявного значения с плавающей точкой, а затем выполняется выражение. */ real_result = (float) a * b; /* Это явное приведение. Здесь вы принудительно конвертируете результат a * b в float. * /
d = a + b / a * f;
d = f * b / a + a;
Вы не можете реализовать неявное приведение. Неявное приведение осуществляется компилятором.
Будьте осторожны при реализации явного приведения. Потому что в Explicit приведите значение переменной me
теряется с некоторой точностью при приведении большого значения типа данных к типам данных меньше его.