Artigo original: Ternary Operator in C Explained
Programadores usam o operador ternário para a tomada de decisões no lugar das instruções condicionais de if e else mais extensas.
O operador ternário recebe três argumentos:
- O primeiro é um argumento de comparação
- O segundo é o resultado caso a comparação seja verdadeira
- O terceiro é o resultado caso ela seja false
É útil pensar no operador ternário como uma versão abreviada da escrita de uma instrução do tipo if-else. Aqui vemos um exemplo de tomada de decisão simples usando if e else:
int a = 10, b = 20, c;
if (a < b) {
c = a;
}
else {
c = b;
}
printf("%d", c);
O exemplo tem mais de 10 linhas, mas isso não é necessário. É possível escrever o programa acima em apenas 3 linhas de código usando um operador ternário.
Sintaxe
condição ? valor_se_verdadeiro : valor_se_falso
A instrução avalia o valor_se_verdadeiro
se a condição
for atendida e o valor_se_falso
se não for.
Aqui vemos o exemplo acima reescrito usando o operador ternário:
int a = 10, b = 20, c;
c = (a < b) ? a : b;
printf("%d", c);
O resultado do exemplo acima deve ser:
10
c
é definido como sendo igual a a
, pois a condição a < b
é verdadeira.
Lembre-se de que os argumentos valor_se_verdadeiro
e valor_se_falso
devem ser do mesmo tipo. Além disso, eles devem ser expressões simples, não instruções completas.
Os operadores ternários podem ser aninhados, assim como instruções if-else. Considere o código a seguir:
int a = 1, b = 2, ans;
if (a == 1) {
if (b == 2) {
ans = 3;
} else {
ans = 5;
}
} else {
ans = 0;
}
printf ("%d\n", ans);
Aqui está o código acima reescrito usando um operador ternário aninhado:
int a = 1, b = 2, ans;
ans = (a == 1 ? (b == 2 ? 3 : 5) : 0);
printf ("%d\n", ans);
O resultado de ambos os códigos acima deve ser:
3