Analise o código JavaScript exibido a seguir. function f1 (n) { if (n % 2 == 0) { return --n; } else { return ++n; } } Em um comando JS, a expressão f1(8) retorna
- A)-8
Errada, porque a função não transforma 8 em -8; ela apenas decrementa o valor em 1.
- B)-7
Errada, pois o resultado não é negativo: o código só reduz 8 para 7.
- C)7
Certa, porque 8 é par e `--n` faz o valor virar 7 antes do retorno.
- D)8
Errada, porque a função não devolve o valor original 8 no caso de entrada par.
- E)9
Errada, pois 9 seria o resultado de incrementar um número ímpar, não de decrementar 8.
Gabarito: C
Aqui a ideia é simples: a função testa se o número é par com `n % 2 == 0`. Se for par, entra no `if` e faz `return --n;`. Esse `--n` é o decremento antes do retorno, ou seja, primeiro reduz o valor de `n` em 1 e só depois devolve o resultado. Como a chamada é `f1(8)`, o número 8 é par. Então a função não cai no `else`, e sim no bloco do `if`. Ao aplicar `--n`, 8 vira 7, e é exatamente 7 que volta para quem chamou a função. Muita gente confunde `--n` com `n--`. A diferença é a ordem: no pré-decremento, o valor já sai alterado; no pós-decremento, o valor antigo é devolvido primeiro. Aqui isso faz toda a diferença. Por isso o gabarito correto é a alternativa C. A expressão `f1(8)` retorna 7.