public class Solution {
public static void main(String[] args) {
int a = 15;
int b = 4;
float c = (float) a / b;
double d = (double)a * 1e-3 + c;
System.out.println(d);
}
}
почему в строке с переменной с мы приводим к float только переменную а? В лекции писали что всё выражение приводить надо,почему код работает при разных типах?Маргарита
14 уровень
как это работает?
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Konstantin
21 апреля 2020, 14:59
В строках 5 и 6 происходит расширение типов, поэтому достаточно указать одной переменной к какому типу нужно привести, а второй будет приведен неявно.
Если бы было сужение к примеру так :
long a = 22222222;
long b = 555555555;
int c = (int)a * b;
то код не скомпилируется
А вот так будет верно:
int c = (int) (a / b)
И вот , если интересно , посмотри эти ссылки
https://metanit.com/java/tutorial/2.2.php,
http://pr0java.blogspot.com/2015/12/java.html
+1
Маргарита
22 апреля 2020, 09:42
спасибо)
0
Александр
21 апреля 2020, 11:56
все просто, потомута все переменные в выражении приводятся к большему типу. Т.е. если в выражении есть среди прочих float, а остальные переменные имеют размер меньший, чем float, то знай, результат будет float.
0
Маргарита
22 апреля 2020, 09:42
спасибо теперь понятно)
0