Iniciante⏱️ 20 min

02. Variáveis, Tipos de Dados e Entrada/Saída

Domina os tipos primitivos em C (int, char, float, double), tamanhos em bytes com sizeof e entrada de dados com scanf.

Variáveis, Tipos de Dados e Entrada/Saída

Em C, todas as variáveis precisam de ter um tipo explicitamente declarado antes de serem utilizadas. A linguagem é estaticamente tipada, o que garante máxima eficiência de memória e velocidade de processamento.


Tipos Primitivos Básicos

Tipo Descrição Tamanho Típico Especificador de Formato (printf/scanf)
char Caractere individual ou inteiro de 1 byte 1 byte (8 bits) %c (como char) ou %d (código ASCII)
int Número inteiro 4 bytes (32 bits) %d ou %i
float Número decimal de precisão simples 4 bytes %f
double Número decimal de dupla precisão 8 bytes %lf

Exemplo Prático com Declaração e Formatação

#include <stdio.h>

int main(void) {
    int idade = 25;
    float altura = 1.78f;
    char inicial = 'C';
    double pi = 3.141592653589793;

    printf("Idade: %d anos\n", idade);
    printf("Altura: %.2f metros\n", altura); // .2 formata para 2 casas decimais
    printf("Inicial: %c\n", inicial);
    printf("PI com precisão: %.10lf\n", pi);

    // Saber o tamanho real em bytes no teu sistema
    printf("\nTamanho do int: %zu bytes\n", sizeof(int));
    printf("Tamanho do double: %zu bytes\n", sizeof(double));

    return 0;
}

Lendo Dados do Utilizador com scanf

A função scanf() é a forma padrão de ler dados a partir do teclado:

#include <stdio.h>

int main(void) {
    int anoNascimento;
    
    printf("Em que ano nasceste? ");
    // Repara no operador & (endereço de memória) antes do nome da variável!
    if (scanf("%d", &anoNascimento) == 1) {
        int idadeEstimada = 2026 - anoNascimento;
        printf("Tens aproximadamente %d anos.\n", idadeEstimada);
    } else {
        printf("Entrada inválida! Deves digitar um número inteiro.\n");
    }

    return 0;
}

Atenção ao & (E comercial):
scanf precisa de saber onde guardar o valor lido na memória RAM. Por isso, passamos o endereço da variável (&anoNascimento). Se esqueceres o &, o teu programa vai provavelmente abortar com um Segmentation Fault!


Modificadores de Tipo

Podes alterar a capacidade e o sinal dos tipos primitivos:

  • unsigned int: Guarda apenas valores positivos (de 0 a 4.294.967.295), duplicando o alcance positivo.
  • short int: Ocupa normalmente 2 bytes (valores de -32.768 a 32.767).
  • long long int: Pelo menos 8 bytes para números inteiros gigantescos.