function oMaior (a, b, c){
if(a > b && c){
return (`${a} é o maior`);
}if (b > a && c){
return (`${b} é o maior`);
}if (c > a && b){
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20));
function oMaior (a, b, c){
if(a > b && c){
return (`${a} é o maior`);
}if (b > a && c){
return (`${b} é o maior`);
}if (c > a && b){
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20));
Oi, Marcos! Tudo bem?
O problema ocorre devido à forma como estamos utilizando as condições dentro dos if
. Quando escrevemos a > b && c
, o JavaScript interpreta isso como a > b
e c
sendo um valor verdade (truthy), ou seja, não estamos comparando a
, b
e c
da maneira como esperamos.
Para corrigir isso, devemos fazer cada comparação explicitamente, de acordo com o exemplo abaixo:
function oMaior(a, b, c) {
if (a > b && a > c) {
return (`${a} é o maior`);
} else if (b > a && b > c) {
return (`${b} é o maior`);
} else {
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20));
Agora, a função compara corretamente a
, b
e c
em cada if
e quando chamarmos oMaior(10, 5, 20)
, o resultado será 20 é o maior
.
Espero ter ajudado!
Um forte abraço e bons estudos!
O problema no seu código está no uso incorreto dos operadores lógicos dentro dos condicionais if. Quando você escreve algo como a > b && c, o && não está comparando corretamente os valores que você deseja. Isso é porque c sozinho não é comparado diretamente, mas é avaliado como um valor "verdadeiro" ou "falso" (truthy ou falsy). Isso pode causar comportamento inesperado.
O correto seria comparar os três valores entre si em cada condição. A comparação deveria ser algo como a > b && a > c para verificar corretamente se a é maior que ambos b e c.
Aqui está o código corrigido:
function oMaior (a, b, c) {
if (a > b && a > c) {
return (`${a} é o maior`);
} else if (b > a && b > c) {
return (`${b} é o maior`);
} else {
return (`${c} é o maior`);
}
}
console.log(oMaior(10, 5, 20)); // 20 é o maior