← Questões de Programação

Programação · FGV · 2021

Questão comentada de Programação

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

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.

Continue treinando

Questões relacionadas