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
X
sozinho?
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
, X
não é uma variável, mas uma constante, portanto é literalmente substituído por pré-processador por 5.2
qualquer lugar que você mencionou X
. Você não pode reatribuir X
.
auto
realmente 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 parafloat
precisão, depois os adiciona como flutuadores, enquanto o segundo arredonda a representação dupla de 5,1 paradouble
e o adiciona aodouble
valor 5.2 usandodouble
adição, depois arredonda o resultado desse cálculo parafloat
precisã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.