Como usar o printf de C com especificadores de formato. Testador interativo de %d / %f / %s / largura / precisão.
printf("...%d...\n", x); imprime um valor%d=int, %f=double, %c=char, %s=stringscanf("%d", &x); lê a entrada — não esqueça do &\n é quebra de linha%5d, %.2f)%x (hex), %o (octal)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
printf, o especificador de formato precisa bater com o tipo da variável.int a = 5;printf("%d", a); → 5%2d → " 5", %4d → " 5"double b = 5.23;printf("%f", b); → 5.230000%5.2f → " 1.52" (largura 5, 2 casas decimais)%f para um int ou %d para um double gera zero ou valores indefinidos.% 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.%d ← age, segundo %.1f ← h. São preenchidos na ordem em que você lista.% = quantidade de argumentos após a vírgula. Se não bater, imprime lixo.printf("%d + %d = %d\n", a, b, a+b); → 3 + 5 = 8%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.%.Nf — N dígitos após o ponto decimal| Formato | Significado | Saída para b = 3.14159 |
|---|---|---|
%f | Padrão (6 dígitos decimais) | 3.141590 |
%.0f | Só a parte inteira (arredondada) | 3 |
%.1f | 1 dígito decimal (arredondado) | 3.1 |
%.2f | 2 dígitos decimais (comum — valores, %) | 3.14 |
%.4f | 4 dígitos decimais (física/ciência) | 3.1416 |
%8.2f | Largura 8, alinhado à direita, 2 dígitos decimais | " 3.14" |
%-8.2f | Largura 8, alinhado à esquerda, 2 dígitos decimais | "3.14 " |
%08.2f | Largura 8, preenchido com zeros, 2 dígitos decimais | "00003.14" |
%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).double x = 3.145;printf("%.2f", x); → 3.15 (arredondado para cima)double y = 3.144;printf("%.2f", y); → 3.14 (arredondado para baixo)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)%e ou %g preservam os dígitos significativos.
scanf é substituído por uma caixa de diálogo.printf com %d %d %d para imprimir três variáveis de uma vez%5d, %.3f, %-10s\n (quebra de linha) e \t (tab) para alinhar texto%c (char), %x (hex) e %o (octal)Teste seu entendimento desta aula!
%d é o especificador de formato para inteiros, então o valor 10 é impresso como está.
scanf precisa do endereço da variável, então você coloca & (o operador de endereço) antes da variável.
%.2f imprime um número em ponto flutuante com dois dígitos após o ponto decimal, então 3.14159 vira 3.14.