Вы находитесь на странице: 1из 2

www.tiexpert.

net

Pg. 1 de 2

Mscara de Dados
Mscaras de dados so usadas para definir entradas e sadas de dados em C. Basicamente, ela demonstra ao programa que tipo de converso deve ser adotado para converter os bytes armazenados em uma varivel. Por exemplo, se entrarmos com uma varivel de ponto flutuante (float) que usa 4 bytes de memria, na sada, tambm devemos utilizar uma mscara de ponto flutuante. Se utilizarmos uma mscara de nmero inteiro, o algoritmo vai ler apenas os dois primeiros bytes, pois uma varivel inteira tem apenas a metade dos bytes de ponto flutuante. E alm disso, variveis int, float e double usam padres diferentes de armazenamento. Por exemplo, se digitarmos a entrada 10, ela ser convertida em bytes em int, que ser convertida em bytes diferentes em float, que por sua vez, ser totalmente diferente de double. Apenas char igual int e vice-versa. /* EXEMPLO DO QUE PODE ACONTECER DE ERRADO EM UM PROGRAMA Aqui declararemos uma variavel inteira valendo 65. veja o que acontece quando mandamos imprimir o inteiro como flutuante */ #include <stdio.h> int main (void) { int nr=65; printf ("Este e um int\t-> %d\n", nr); printf ("Este e um char\t-> %c\n", nr); printf ("Este e um float\t-> %f\n", nr); return 0; } Como podemos ver, apenas int e char deram um resultado satisfatrio, float resultou em algo inesperado - nada.

As mscaras
Agora que vimos para que servem as mscaras, veremos qual a mscara de cada tipo de entrada e sada. mscara %d %c %f %i %ld %e %E %o %x %X %s tipo de dado int char float ou double int long int float ou double float ou double int int int char descrio mostra um nmero inteiro mostra um caracter mostra um nmero decimal mostra um nmero inteiro mostra um nmero inteiro longo mostra um nmero exponencial (nmero cientfico) mostra um nmero exponencial (nmero cientfico) mostra um nmero inteiro em formato octal mostra um nmero inteiro em formato hexadecimal mostra um nmero inteiro em formato hexadecimal mostra uma cadeia de caracteres (string)

http://www.tiexpert.net/programacao/c/mascara-de-dados.php

www.tiexpert.net
// Exemplo de mascaras e formato de seus dados #include <stdio.h> int main (void) { printf ("Mascara printf ("Mascara printf ("Mascara printf ("Mascara printf ("Mascara printf ("Mascara printf ("Mascara printf ("Mascara printf ("Mascara return 0; }

Pg. 2 de 2

d\t-> %d\n", 1); c\t-> %c\n", 'A'); f\t-> %f\n", 1.65); i\t-> %i\n", 1); ld\t-> %ld\n", 1); e\t-> %e\n", 1.65); o\t-> %o\n", 256); x\t-> %x\n", 256); s\t-> %s\n", "Cadeia de caracteres (string)");

Alguns cuidados
O problema de usar mscaras a ambiguidade que pode trazer ao compilador. Por exemplo: se por acaso quisermos utilizar o smbolo %, como faremos? Nesse caso podemos usar outros tipo de mscara. mscara %% \" \' mostra % " (aspas) ' (aspas simples)

Tambm podemos usar modificadores nas mscaras mascara modificao descrio %d %f %o %x %+d %#o %#x mostra o sinal de positivo se houver completa o nmero octal com zero mostra indicador de Hexadecimal (0x). %."nmero"f o nmero que vier entre o ponto e o f ser o limite de sua preciso

// Exemplo de modificadores de mascaras #include <stdio.h> int main (void) { printf ("Original printf ("Original 1.2345); printf ("Original printf ("Original }

\"%d\"\nModificado: %+d %+d\n\n", 1, 1, -1); \"%f\"\nModificado: %.1f %.3f\n\n", 1.2345, 1.2345, \"%o\"\nModificado: %#o\n\n", 256, 256); \"%x\"\nModificado: %#x\n", 256, 256);

Autor: Denys William Xavier Este artigo est sob Licena Creative Commons Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

http://www.tiexpert.net/programacao/c/mascara-de-dados.php