Habituellement en C, nous devons indiquer à l'ordinateur le type de données dans la déclaration de variable. Par exemple, dans le programme suivant, je veux imprimer la somme de deux nombres à virgule flottante X et Y.
#include<stdio.h>
main()
{
float X=5.2;
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
J'ai dû dire au compilateur le type de variable X.
- Le compilateur ne peut-il pas déterminer le type de
X
lui-même?
Oui, je peux le faire:
#define X 5.2
Je peux maintenant écrire mon programme sans dire au compilateur le type de X
:
#include<stdio.h>
#define X 5.2
main()
{
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
Nous voyons donc que le langage C a une sorte de fonctionnalité, à l'aide de laquelle il peut déterminer lui-même le type de données. Dans mon cas, il a déterminé qu'il X
est de type float.
- Pourquoi devons-nous mentionner le type de données, lorsque nous déclarons quelque chose dans main ()? Pourquoi le compilateur ne peut-il pas déterminer seul le type de données d'une variable
main()
comme il le fait dans#define
.
#define X 5.2
, X
n'est pas une variable, mais une constante, il est donc littéralement remplacé par un préprocesseur avec 5.2
n'importe où que vous avez mentionné X
. Vous ne pouvez pas réaffecter X
.
auto
fait en fait ce que vous voulez). D'un autre côté, si vous pensez savoir ce que fait votre code et que vous avez réellement tapé autre chose, une frappe statique comme celle-ci détectera une erreur plus tôt, avant qu'elle ne devienne un énorme problème. Chaque langue établit un équilibre: typage statique, inférence de typage, typage dynamique. Pour certaines tâches, la frappe supplémentaire en vaut la peine. Pour d'autres, c'est un gaspillage.
5.2
est undouble
, donc le premier programme arrondit les doubles littéraux à lafloat
précision, puis les ajoute comme des flottants, tandis que le second arrondit la double représentation de 5.1 àdouble
et l'ajoute à ladouble
valeur 5.2 en utilisant l'double
addition, puis arrondit le résultat de ce calcul à lafloat
précision . Étant donné que l'arrondi se produit à différents endroits, le résultat peut différer. Ceci n'est qu'un exemple pour les types de variables affectant le comportement d'un programme par ailleurs identique.