Considere o código em PHP apresentado a seguir: <?php $a...

Próximas questões
Com base no mesmo assunto
Q2432604 Programação

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?

Alternativas

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 XOR 10000 resulta em 10011, 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