Geralmente em C, temos que informar ao computador o tipo de dados na declaração da variável. Por exemplo, no programa a seguir, quero imprimir a soma de dois números de ponto flutuante X e Y.
#include<stdio.h>
main()
{
float X=5.2;
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
Eu tive que dizer ao compilador o tipo de variável X.
- O compilador não pode determinar o tipo
Xsozinho?
Sim, é possível se eu fizer isso:
#define X 5.2
Agora posso escrever meu programa sem informar ao compilador o tipo de X:
#include<stdio.h>
#define X 5.2
main()
{
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
Portanto, vemos que a linguagem C possui algum tipo de recurso, usando o qual ele pode determinar o tipo de dados por conta própria. No meu caso, determinou que Xé do tipo float.
- Por que precisamos mencionar o tipo de dados, quando declaramos algo em main ()? Por que o compilador não pode determinar o tipo de dados de uma variável por conta própria,
main()como faz em#define.
#define X 5.2, Xnão é uma variável, mas uma constante, portanto é literalmente substituído por pré-processador por 5.2qualquer lugar que você mencionou X. Você não pode reatribuir X.
autorealmente faz o que você deseja). Por outro lado, se você acha que sabe o que seu código está fazendo e, na verdade, digitou outra coisa, a digitação estática assim detectará um erro mais cedo, antes de se tornar um grande problema. Cada idioma atinge um equilíbrio: digitação estática, dedução de tipo, digitação dinâmica. Para algumas tarefas, a digitação extra vale a pena. Para outros, é um desperdício.
5.2é adouble, portanto, o primeiro programa arredonda os literais duplos parafloatprecisão, depois os adiciona como flutuadores, enquanto o segundo arredonda a representação dupla de 5,1 paradoublee o adiciona aodoublevalor 5.2 usandodoubleadição, depois arredonda o resultado desse cálculo parafloatprecisão . Como o arredondamento ocorre em locais diferentes, o resultado pode ser diferente. Este é apenas um exemplo para os tipos de variáveis que afetam o comportamento de um programa idêntico.