#java #casting #implicit-conversion
Вопрос:
Наш учитель задал нам следующий вопрос:
Какое преобразование типов происходит в следующем операторе?
int a=(int)((5 4)/2.0);
Варианты таковы:
(a) Явные
(b) Подразумеваемый
c) и то, и другое
(d) Нет
Наш учитель говорит, что это и то, и другое, но другой учитель утверждает, что это только явное. Я думаю, что и то и другое тоже, так как (5 4)/2.0
дает двойной результат, который возможен только после неявного преобразования типа 5 4
, значение которого равно 9
(целочисленному значению), чтобы удвоиться для включения операций с двойным значением 2.0
. После этого он явно преобразуется в int
.
Я прав?
Комментарии:
1. Да, похоже, и то, и другое.
2. Хорошо, спасибо тебе!
3. когда (5 4) делится на 2,0, к целочисленному операнду применяется расширяющее примитивное преобразование. Видишь docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6