Publicidade

Aula 4: printf

Como usar o printf de C com especificadores de formato. Testador interativo de %d / %f / %s / largura / precisão.

📖 O que você vai aprender nesta página
✅ Essencial
  • printf("...%d...\n", x); imprime um valor
  • %d=int, %f=double, %c=char, %s=string
  • scanf("%d", &x); lê a entrada — não esqueça do &
  • \n é quebra de linha
⭐ Leia se tiver tempo
  • Largura/precisão (%5d, %.2f)
  • %x (hex), %o (octal)
  • Valor de retorno do scanf e tratamento de erros

printf — Imprimir uma String

printf imprime uma string (uma sequência de caracteres) na tela.
\n é uma sequência de escape que significa "quebra de linha".
printf("Hello World!\n");       // Imprime uma string
printf("5 x 6 = %d\n", 30);    // Insere um número dentro da string
printf("result = %d\n", value); // Exibe o valor de uma variável

Especificadores de Formato — %d e %f

Quando você imprime uma variável com printf, o especificador de formato precisa bater com o tipo da variável.
Inteiro → %d
int a = 5;
printf("%d", a);5

Largura: %2d" 5", %4d" 5"
Ponto flutuante → %f
double b = 5.23;
printf("%f", b);5.230000

Precisão: %5.2f" 1.52" (largura 5, 2 casas decimais)
Incompatibilidade de tipo/formato imprime lixo! Usar %f para um int ou %d para um double gera zero ou valores indefinidos.

Imprimindo Várias Variáveis em um Único printf

Acrescente mais especificadores % na string de formato e liste as variáveis na mesma ordem depois da vírgula. O primeiro % pareia com a primeira variável, o segundo % com a segunda, e assim por diante.
int age = 25;
double h = 170.5;

printf("Age %d, height %.1f cm\n",
    age, h);

// Output: Age 25, height 170.5 cm
A ordem é tudo
Primeiro %dage, segundo %.1fh. São preenchidos na ordem em que você lista.
⚠️ As quantidades têm que bater
Quantidade de especificadores % = quantidade de argumentos após a vírgula. Se não bater, imprime lixo.
💡 Também dá para passar expressões
Os argumentos não se limitam a variáveis — você pode passar expressões inteiras e o resultado é formatado direto.
printf("%d + %d = %d\n", a, b, a+b);3 + 5 = 8

Controlando Casas Decimais do double

Por padrão, %f imprime seis dígitos depois do ponto decimal. Então 3.14 sai como 3.140000 — muito ruído. O especificador de precisão deixa você controlar isso.
Forma básica: %.Nf — N dígitos após o ponto decimal
Formato Significado Saída para b = 3.14159
%fPadrão (6 dígitos decimais)3.141590
%.0fSó a parte inteira (arredondada)3
%.1f1 dígito decimal (arredondado)3.1
%.2f2 dígitos decimais (comum — valores, %)3.14
%.4f4 dígitos decimais (física/ciência)3.1416
%8.2fLargura 8, alinhado à direita, 2 dígitos decimais"    3.14"
%-8.2fLargura 8, alinhado à esquerda, 2 dígitos decimais"3.14    "
%08.2fLargura 8, preenchido com zeros, 2 dígitos decimais"00003.14"
※ Em %W.Nf, W é a largura total (incluindo o ponto decimal) e N é o número de dígitos após o ponto. Você pode omitir qualquer uma (%.3f, %10f).
✂️ Arredondado, não truncado
double x = 3.145;
printf("%.2f", x);3.15 (arredondado para cima)

double y = 3.144;
printf("%.2f", y);3.14 (arredondado para baixo)

Os dígitos excedentes são arredondados, não cortados, então o valor impresso pode diferir um pouco do que realmente está armazenado.
📊 Use %e ou %g para números muito grandes/pequenos
double v = 0.00000123;
printf("%.2f", v);0.00 (a informação se perde!)
printf("%.2e", v);1.23e-06 (notação científica)
printf("%g", v);1.23e-06 (a forma mais curta)

Para valores extremos, %e ou %g preservam os dígitos significativos.

Testador de Especificador de Formato

Resultado

Experimente — printf e scanf

Neste simulador, scanf é substituído por uma caixa de diálogo.
io_demo.c
Saída
Clique em "Executar" para rodar...
💡 Algumas coisas para tentar
Publicidade

Aulas Relacionadas

Primeiros Passos
Aula 3: Variáveis
O que é uma variável em C? Aprenda int, double e char com diagramas.
Primeiros Passos
Aula 2: Hello World
Escreva seu primeiro programa em C e aprenda o fluxo de compilar e executar.
Referência
Folha de Referência de C
Referência rápida para printf, operadores, tipos e mais.
← Aula anterior
Aula 3: Variáveis
Próxima aula →
Aula 6: Teste (Variáveis e printf)

Teste de Revisão

Teste seu entendimento desta aula!

Q1. Qual é a saída de printf("%d", 10);?

%d
10
10.000000

%d é o especificador de formato para inteiros, então o valor 10 é impresso como está.

Q2. Qual chamada de scanf lê um inteiro corretamente?

scanf("%d", x);
scanf("%d", &x);
scanf("%d", *x);

scanf precisa do endereço da variável, então você coloca & (o operador de endereço) antes da variável.

Q3. Qual é a saída de printf("%.2f", 3.14159);?

3.14
3.14159
3.1

%.2f imprime um número em ponto flutuante com dois dígitos após o ponto decimal, então 3.14159 vira 3.14.

Compartilhe este artigo
Compartilhar no X (Twitter) Compartilhar no Facebook