← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

Considere o script JavaScript a seguir. let x = 16; let y = []; y[2] = x; y[2] %= 3; y[0] = x<<2; y[1] = x <<= 5; alert(y); A execução desse script exibe:

Gabarito: D

Aqui o ponto central é lembrar que em JavaScript os operadores de deslocamento de bits trabalham com a representação binária dos números. Quando você faz x << 2, está deslocando os bits de x duas posições para a esquerda, o que equivale a multiplicar por 4. Como x vale 16, o resultado é 64. Depois vem a linha y[1] = x <<= 5. Esse operador é composto: primeiro ele atualiza a variável x, e depois devolve o novo valor da expressão. Então x passa de 16 para 16 << 5, isto é, 512. Esse 512 é justamente o valor atribuído a y[1]. Na linha y[2] %= 3, o valor já guardado em y[2] era 16. O operador %= faz o resto da divisão por 3, então 16 % 3 = 1. Resultado final do array: [64, 512, 1]. Em JavaScript, ao exibir um array com alert, os elementos aparecem separados por vírgula. Por isso o gabarito é a letra D. A banca gosta bastante dessa mistura de operador de atribuição composto com deslocamento de bits, porque muita gente calcula só uma parte e esquece que a expressão também altera a própria variável.

Continue treinando

Questões relacionadas