Considere o código em PHP apresentado a seguir: <?php $a...
Considere o código em PHP apresentado a seguir:
<?php $a=5; $b=--$a*2; $c=4*$a--/++$b; echo $a^($b*$c); ?> |
Após ser executado, qual é o valor impresso pelo programa na linguagem PHP?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é: E - 19.
Vamos entender passo a passo como chegamos a esse resultado.
O código PHP fornecido é:
<?php
$a = 5;
$b = --$a * 2;
$c = 4 * $a-- / ++$b;
echo $a ^ ($b * $c);
?>
Primeiro, precisamos entender a sequência de operações e a forma como os operadores de incremento e decremento funcionam.
Passo 1: $a = 5;
Inicializamos a variável $a
com o valor 5.
Passo 2: $b = --$a * 2;
O operador --$a
decrementa $a
antes da multiplicação. Portanto, $a
passa a ser 4 antes de ser multiplicado por 2.
Resultado: $b = 4 * 2 = 8
Passo 3: $c = 4 * $a-- / ++$b;
Primeiro, $b
é incrementado, passando de 8 para 9 (devido ao ++$b
).
Agora, $a--
utiliza o valor atual de $a
(4) e depois decrementa $a
, que se torna 3.
A expressão se torna $c = 4 * 4 / 9
.
Resultado: $c = 16 / 9 ≈ 1.7777...
Passo 4: echo $a ^ ($b * $c);
Agora temos:
$a = 3
$b = 9
$c ≈ 1.7777...
A expressão $b * $c
resulta em aproximadamente 16.
Portanto, a expressão completa se torna:
echo 3 ^ 16;
O operador ^
em PHP é o operador de XOR bit a bit. Vamos converter 3 e 16 para binário:
3
em binário:0011
16
em binário:10000
Aplicando o XOR bit a bit:
0011
XOR10000
resulta em10011
, que é 19 em decimal.
Portanto, o valor impresso pelo programa é 19.
Agora, vamos justificar as alternativas incorretas:
- A - 43.046.721: Este valor é consideravelmente maior e não se justifica pelas operações do código.
- B - 144: Este valor não corresponde ao resultado das operações de XOR bit a bit entre 3 e 16.
- C - 48: Este valor também não resulta das operações realizadas no código.
- D - 5: Este valor ignora todas as operações subsequentes e não corresponde ao resultado final.
Espero que esta explicação tenha ajudado a compreender como o valor 19 foi obtido e por que as outras alternativas estão incorretas. Qualquer dúvida, estou à disposição!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
$a=5;: Define a variável $a com o valor 5.
$b=--$a*2;: Pré-decrementa $a para 4 e então multiplica por 2, resultando em $b sendo 8.
$c=4*$a--/++$b;: Pós-decrementa $a após usar o valor atual (4) na expressão. Pré-incrementa $b para 9 e então realiza a divisão e a multiplicação, resultando em $c sendo 1.7777777777778 (4 * 4 / 9).
echo $a^($b*$c);: Calcula o XOR entre $a e o resultado da multiplicação de $b por $c
$a = 3;
$b * $c = 16;
Agora basta fazer o XOR DE 3 ^ 16
3 em binário: 00000011
16 em binário: 00010000
Operação XOR:
00000011
^
00010000
___________
00010011
Resultado = 19;
Complemento:
A operação XOR (ou exclusivo) é uma operação lógica binária que resulta em verdadeiro (ou 1) apenas quando os operandos têm valores diferentes. Em outras palavras, o resultado é falso (ou 0) quando os operandos são iguais.
Resposta correta letra (E)
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo