Как использовать неявные и явные приведения?

Возможный дубликат:
Определите неявное приведение и явное приведение

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;

  1. В ролях от int -> double
  2. Рассчитать результат: a * f
  3. Преобразуйте результат a * f из double в int, затем установите значение real_result

  1. Поскольку тип real_result имеет тип int, может быть маленьким для сохранения результата * f (double) -> в вашей программе может быть логическая ошибка (потеря информации).

  2. Некоторые компиляторы отображают предупреждение, чтобы заметить вашу ошибку логики, если вы уверены в логике своего выражения, вы можете сказать компилятору прервать это предупреждение, используя явное приведение:
    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

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

Другие вопросы по тегам