E ai Javeiros,
sou novo por aqui, estou começando com estudos para certificação e gostaria de compartilhar informações…
coloco aqui 2 questoes que achei interesante!
1)Quais das quetoes resulta em um valor positivo?
a. int x = -1; x>>>5;
b. int x = -1; x>>>32;
c. byte x = -1; x>>>5;
d. int x = -1; x>>5;
O que resulta compilar o codigo abaixo?
public class Conditional{
public static void main (String args[]){
int x = 4;
System.out.prinln(“valor é”+((x>4)?99.99:9));
}
}
a. A saída: valor é 99.99
b. A saída: valor é 9
c. A saída: valor é 9.0
d. Erro de compilação na linha 5
brainn, eu não fiz as contas aqui não, mas por olhar, eu acho que a número 1 a resposta é a letra C… Mas por garantia, quando chegar em casa eu vou fazer a contas na mão e vejo se eu acertei…
vc acredita se eu disser que eu enxerguei o contrário … :oops:
[quote=“FabioAzul”]1a D - o operador >>> é o de deslocamento a direita sem sinal, que preenche com zeros a esquerda.
[/quote]
Tipo, o certo é só o A .
a letra D esquece exatamente por não ser o >>>,
a letra B esquece pq " vc faz a volta " exata, isto é, o inteiro tem 32 bits, vc desloca 32 bits para a direita, isso equivale a um deslocamento de 0 bits … naum muda nada
a letra C fiquei na dúvida, mas como vc está fazendo a operação com o Inteiro (32 bits) e guardando num byte (8 bits), ia precisar de pelo menos um deslocamento maior que 24 bits para mudar o sinal…
Pq que qdo vc tem duas opções com tipos de precisão diferente, o tipo assumido é o de maior precisão. Qdo vc “imprime” um número ponto flutuante, ele por padrão vem com o “.0”.
[quote=“RafaelJ”]Mas as comparações estão entre int x = 4 e 4. Onde entra o ponto flutuante aí?
Fiz o teste e dá 9.0 mesmo, só não entendi o por quê…[/quote]
acho que me expressei mal…
qdo os resultados possíveis são de tipos diferentes, o tipo de maior precisão é o considerado. Se vc ver no comando vc pode ter um [color=“red”]double[/color] ou um [color=“blue”]int[/color] como resultado. No caso, o de maior precisão é o [color=“red”]double[/color].