Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Entender o comando if
  2. Entender o comando if-else
  3. Entender o comando if-else-if
  4. Entender o comando if ternário

A linguagem de programação C fornece os comandos de decisão if, if-else, if-else-if e if ternário. Nesta parte do tutorial vamos aprender esses comandos.

O funcionamento dos comandos de decisão já foram discutidos em Portugol: Comandos de Decisão sendo a leitura recomendada.

Os comandos de decisão são utilizando em conjunto com os operadores lógicos e relacionais vistos em C Operadores: Relacionais e C Operadores: Lógicos.

As condições mostradas nas sintaxes abaixo podem ser compostas de uma ou mais condições declaradas utilizando operadores relacionais e lógicos, por exemplo.

A linguagem C possui o comando if que permite que façamos validações para a execução de um bloco de código de acordo com uma ou mais condições passadas como argumentos para o comando.

Sintaxe
if(condição)
{
  //seu código aqui
}
Fig. 1: Fluxograma do Comando if
Exemplo 1
#include <stdio.h>

int main()
{
    int valor = 10;
    if (valor == 10)
    {
        printf("valor igual a 10");
    }
}
Saída
valor igual a 10

Quando o trecho de código contido no corpo do comando if for apenas uma linha, o uso de { e } é opcional. Como boa prática, deve-se utilizar { e } para melhor legibilidade do código e para evitar erros na compilação.

Exemplo 2
#include <stdio.h>

int main()
{
    int valor = 11;
    if (valor > 10)
        printf("valor maior que 10");
}
Saída
valor maior que 10

Nesse comando, uma condição é passada como argumento para o comando que realiza uma verificação. Caso a condição seja verdadeira, apenas um bloco de código if é executado, caso contrário, apenas outro bloco else é executado.

Sintaxe
if(condição)
{
  //se verdadeira, esse trecho será executado
}
else
{
  //caso contrário, esse trecho de código será executado
}
Fig. 2: Fluxograma do Comando if-else
Exemplo 3
#include <stdio.h>
int main()
{
    int valor = 10;
    if (valor > 10)
    {
        printf("valor maior que 10");
    }
    else
    {
        printf("valor não é maior que 10");
    }
}
Saída
valor não é maior que 10

Quando o trecho de código contido no corpo do comando if-else for apenas uma linha, o uso de { e } é opcional. Como boa prática, deve-se utilizar { e } para melhor legibilidade do código e para evitar erros na compilação.

Exemplo 4
#include <stdio.h>
int main()
{
    int valor = 10;
    if (valor > 10)
        printf("valor maior que 10");
    else
        printf("valor não é maior que 10");
}
Saída
valor não é maior que 10

Para realizarmos validações em cascata, podemos utilizar o comando if-else-if cuja sintaxe pode ser vista logo abaixo. Quando uma condição retorne falso, as condições seguintes são validades uma após a outra. Caso nenhuma retorne verdadeiro, o bloco else é executado.

Sintaxe
if(condição1)
{
  //se verdadeira, esse trecho será executado
}
else if (condição2)
{
 //se verdadeira, esse trecho será executado
}
else if (condição3)
{
//se verdadeira, esse trecho será executado
}
else
{
 //caso contrário, esse trecho de código será executado
}
Fig. 3: Fluxograma do Comando if-else-if
Exemplo 5
#include <stdio.h>

int main()
{
    int valor = 2;
    if (valor == 1)
    {
        printf("igual a 1");
    }
    else if( valor < 1)
    {
        printf("menor que 1");
    }
    else
    {
        printf("maior que 1");
    }
}
Saída
maior que 1

A linguagem C possui um operador ternário que é representado pelo operador (?:) como pode ser conferido na sintaxe abaixo. Para execução de pequenos trechos de código, esse operador pode ser utilizado.

Sintaxe
(condicao) ? expressao1 : expressao2;
Fig. 4: Fluxograma do Comando if ternário

Caso condicao seja verdadeira, a instrução contida em expressão1 será executada. Sendo condicao falsa, a instrução contida em expressao2 será executada.

Exemplo 6
#include <stdio.h>

int main()
{
    int valor = 0;
    int valor2 = 1;
    valor = ( valor2 > 0) ? 1 : 0;
}
Saída
1

Tanto expressao1 quanto expressao2 podem conter funções ou expressões em seu corpo:

Exemplo 7
int valor2 = (valor == 10) ? valor++: valor--;
int valor3 = (valor == 10) ? funcao1() : funcao2();
Saída
-

O if ternário pode ser utilizado em funções sendo passado como argumento:

Exemplo 8
printf("%s",((valor > 0) ? "maior" : "menor"));
Saída
-
  1. 11/03/2025 - revisão 3 - Correção em explicação if, if-else-if; Ajuste em intro.
  2. 08/10/2024 - revisão 2 - Ajustes pontuais
  3. 28/09/2023 - revisão 1 - Correção em referências, erros gramaticais, sintaxe, observações e adição de fluxogramas
  4. 19/05/2023 - versão inicial