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):
scanfprecisa 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.