Alternativa E
Para resolver esta questão, precisamos analisar a ordem de precedência dos operadores em C/C++, conforme descrito por Kernighan e Ritchie (K&R), e avaliar a expressão passo a passo.
Hierarquia de Precedência (da maior para a menor)
Na expressão fornecida, encontramos três tipos de operadores:
- Aritméticos (
+, *) - Relacionais (
>) - Lógicos (
&&)
A regra geral é: Aritméticos > Relacionais > Lógicos.
Avaliação Passo a Passo
A expressão é: eligible = 5 + 2 > 10 * 3 > 4 && 5
- Operações Aritméticas (Maior Precedência):
- Multiplicação primeiro: $10 \times 3 = 30$
- Adição depois: $5 + 2 = 7$
- A expressão se torna:
7 > 30 > 4 && 5
- Operações Relacionais (Precedência Média):
- Avaliadas da esquerda para a direita.
- Primeira comparação: $7 > 30$ é Falso (representado por
0 em C). - Segunda comparação: $0 > 4$ também é Falso (representado por
0). - A expressão se torna:
0 && 5
- Operações Lógicas (Menor Precedência):
- O operador
&& (Lógico E) é o último a executar nesta cadeia. - $0 \text{ (Falso)} \land 5 \text{ (Verdadeiro)}$ resulta em Falso (
0).
Conclusão
- Resultado: A variável
eligible recebe o valor 0. - Operador de Menor Precedência: O operador
&& (Lógico E) foi o responsável pelo cálculo final, pois possui a menor precedência entre os utilizados na expressão.
Portanto, a alternativa correta é a E, que indica o valor 0 e o operador Lógico E (&&).