.Valores em C (nível 2) |
Conversões explicitas |
Em algumas ocasiões, pode ser necessário converter um valor de um tipo para outro. O mecanismo usado em C consiste em preceder uma expressão do tipo para o qual queremos a converter, entre parêntesis. Por exemplo :
double) é atribuido à variável pi. Na segunda linha o mesmo valor é convertido para o tipo float antes de ser atribuido à variável pif. Finalmente, na terceira linha o valor de pi, convertido num inteiro é atribuido à variável tres. Neste caso a conversão consiste em guardar apenas a parte inteira do valor (3). Note que no exemplo anterior as conversões explicitas não eram necessárias dado que numa atribuição, o C converte automaticamente os valores para o tipo da variável à qual é atribuido (ver esta secção). Qual é então a utilidade das conversões explicitas ?
O caso da função printf |
Numa chamada à função printf, não há conversões automáticas. Se desejar imprimir um valor inteiro como se fosse um valor decimal (com .00000 no fim) deve colocar uma conversão explicita para float (ou double), da mesma forma, se quiser imprimir um valor decimal sem as casas decimais, é necessário converter explicitamente o valor. Por exemplo o programa :
É um caso onde a conversão explicita é obrigatória. Se escrever :
-ansi e -Wall produzirá dois menssagens de tipo «aviso» :Intervalos para valores inteiros e decimais |
As gamas de valores que podem ser usadas com os tipos int, float e double podem variar de um computador para outro. Para poder escrever programas que tomam em conta essas caracteristicas, pode usar um conjunto de constantes definidas no ficheiro values.h da biblioteca do C. O programa seguinte explicita e mostra os valores dessas constantes.