Marque com X os casos em que existe a necessidade de conversão explícita: int x = 3; float z = 8.5f double y = 7.986; long w = 4 ( ) x ← y ( ) z ← w/x ( ) y ←w*z ( ) z ← x + y - w ( ) w ← x*x
Respostas
Apenas as alternativas a) e d) devem ser convertidas explicitamente.
Acredito que se trata de uma questão sobre a Linguagem C. Desse modo, temos que salientar que a conversão explícita se torna necessária onde a conversão não é feita automaticamente durante a operação.
Vamos analisar cada alternativa, separadamente:
x ← y
Aqui temos uma atribuição direta, onde y (um número double) está sendo atribuído a x (uma variável inteira). Como um double é maior que um inteiro, nesse caso, devemos converter explicitamente x para double.
z ← w/x
w e x são do tipo long e inteiro, respectivamente. Desse modo, o resultado da divisão será um número do tipo long, pois x será promovido automaticamente para long durante a operação. Contudo, z é do tipo float, que é maior do que um long. Deste modo, não necessita de uma conversão explícita.
y ← w*z
w e z são do tipo long e float, respectivamente. Sendo assim, o resultado dessa multiplicação será um número do tipo float. y é do tipo double, sendo maior do que o resultado da multiplicação. Portanto, não há necessidade de uma conversão explícita aqui.
z ← x + y - w
x é inteiro, y é double e w é long. Sendo assim, o resultado das duas operações aritméticas será do tipo double (maior dentre os três). Z é do tipo float, desse modo deve ser convertido para double, explicitamente.
w ← x*x
x é do tipo int, logo x*x também será inteiro. Logo, w, que é do tipo long (maior do que inteiro) não precisa ser convertido.
Você pode aprender mais sobre Tipos de Dados aqui: https://brainly.com.br/tarefa/15640489