Nesta aula, vamos explorar os fundamentos das variáveis e tipos básicos na linguagem C. Variáveis são usadas para armazenar dados que podem ser manipulados durante a execução do programa. A escolha correta do tipo de dado é essencial para garantir eficiência e evitar erros.

Dominar esses conceitos é o primeiro passo para escrever programas em C que funcionem corretamente. Veremos como declarar variáveis, os principais tipos primitivos (int, float, double, char), como inicializá-las e as convenções de nomenclatura adotadas pela comunidade.

Declaração

Em C, toda variável deve ser declarada antes de ser usada. A declaração informa ao compilador o tipo de dado e o nome da variável, permitindo que ele reserve espaço na memória. A sintaxe básica é: tipo nome_da_variavel;.

Por exemplo, para declarar uma variável inteira chamada idade, escrevemos: int idade;. Você pode declarar várias variáveis do mesmo tipo em uma única linha separando-as por vírgulas: int a, b, c;. A declaração deve terminar com ponto e vírgula.

Exemplo de declarações:

int contador;        // variável inteira
float salario;       // ponto flutuante de precisão simples
double pi;           // ponto flutuante de precisão dupla
char letra;          // caractere único

int, float, double, char

Os tipos básicos em C são fundamentais para representar diferentes categorias de dados. O tipo int armazena números inteiros (positivos, negativos ou zero). Ocupa geralmente 4 bytes (32 bits) em sistemas modernos, com faixa de valores de -2.147.483.648 a 2.147.483.647.

Os tipos float e double são usados para números de ponto flutuante (reais). float tem precisão simples (cerca de 6-7 dígitos decimais) e ocupa 4 bytes. double tem precisão dupla (cerca de 15-16 dígitos) e ocupa 8 bytes. Por padrão, literais de ponto flutuante são double; para forçar float, use o sufixo f (ex.: 3.14f).

O tipo char armazena um único caractere, como 'A', '7' ou '$'. Ocupa 1 byte e é internamente tratado como um inteiro pequeno (código ASCII). Pode ser usado para armazenar valores numéricos de -128 a 127 (ou 0 a 255 se unsigned).

Exemplos de uso:

int idade = 25;
float altura = 1.75f;   // note o sufixo f
double precisao = 3.141592653589793;
char inicial = 'J';

Inicialização

Inicializar uma variável significa atribuir um valor a ela no momento da declaração. Em C, variáveis não inicializadas contêm valores lixo (indeterminados), o que pode causar comportamentos imprevisíveis. Portanto, é uma boa prática inicializar sempre as variáveis.

Formas de inicialização:

  • Inicialização direta: int x = 10;
  • Inicialização com chaves (C99 em diante): int y = {20}; (útil para structs e arrays)
  • Atribuição posterior: int z; z = 30;

Exemplo completo:

#include <stdio.h>

int main() {
    int a = 5;          // inicialização direta
    float b = 2.5f;
    char c = 'X';
    double d = 3.14;

    printf("a = %d, b = %.1f, c = %c, d = %.2f\n", a, b, c, d);
    return 0;
}

Convenções de nomes

Escolher nomes significativos para variáveis é crucial para a legibilidade do código. Em C, as regras para identificadores são:

  • Podem conter letras (maiúsculas e minúsculas), dígitos e underscore (_).
  • Não podem começar com dígito.
  • Não podem ser palavras reservadas da linguagem (ex.: int, float, return).
  • Diferenciam maiúsculas de minúsculas (case-sensitive): idade e Idade são diferentes.

Boas práticas de nomenclatura:

  • Use nomes descritivos: salarioBruto em vez de sb.
  • Prefira o estilo snake_case (com underscore) ou camelCase. A comunidade C geralmente usa snake_case para variáveis e funções.
  • Evite nomes muito curtos, exceto para contadores de loops (i, j, k).
  • Constantes costumam ser escritas em MAIÚSCULAS com underscore: TAXA_JUROS.

Exemplos de nomes válidos e inválidos:

int idade;           // válido
int _contador;       // válido (underscore no início)
int 2valor;          // inválido: começa com dígito
int valor final;     // inválido: espaço
int float;           // inválido: palavra reservada

Boas práticas e observações finais

Sempre declare variáveis no início do bloco onde serão usadas (padrão C89) ou no momento do primeiro uso (C99 em diante). Inicialize variáveis para evitar valores lixo. Use tipos adequados: int para inteiros, float/double para reais e char para caracteres. Lembre-se de que char também pode ser usado para armazenar pequenos números inteiros.

Outro ponto importante: o tamanho dos tipos pode variar entre arquiteturas. Para saber o tamanho exato, use o operador sizeof: printf("%zu", sizeof(int));. Isso ajuda a escrever código portável.

Referências

Exercícios

  1. Declare uma variável do tipo int chamada ano e inicialize-a com o valor 2025. Em seguida, declare uma variável float chamada preco com valor 49.99 (use o sufixo f). Escreva um programa que imprima ambas.

    ✓ Resposta:
    #include <stdio.h>
    
    int main() {
        int ano = 2025;
        float preco = 49.99f;
        printf("Ano: %d\n", ano);
        printf("Preço: %.2f\n", preco);
        return 0;
    }
  2. Escreva um programa que declare duas variáveis double (a e b) com valores 3.1415 e 2.71828, calcule a soma e imprima o resultado com 4 casas decimais.

    ✓ Resposta:
    #include <stdio.h>
    
    int main() {
        double a = 3.1415;
        double b = 2.71828;
        double soma = a + b;
        printf("Soma: %.4f\n", soma);
        return 0;
    }
  3. Crie um programa que declare uma variável char chamada letra com o valor 'M'. Imprima o caractere e seu código ASCII (use %d).

    ✓ Resposta:
    #include <stdio.h>
    
    int main() {
        char letra = 'M';
        printf("Caractere: %c\n", letra);
        printf("Código ASCII: %d\n", letra);
        return 0;
    }
  4. Explique por que a declaração int 1numero; é inválida em C. Dê um exemplo de nome de variável válido que comece com underscore.

    ✓ Resposta:

    Em C, identificadores não podem começar com dígito. Portanto, 1numero é inválido. Um nome válido começando com underscore: _valor (ex.: int _valor;).

  5. Escreva um programa que declare três variáveis do tipo int em uma única linha, inicialize-as com 10, 20 e 30, e imprima a média (como double) delas.

    ✓ Resposta:
    #include <stdio.h>
    
    int main() {
        int a = 10, b = 20, c = 30;
        double media = (a + b + c) / 3.0;
        printf("Média: %.2f\n", media);
        return 0;
    }