Envoyé par koala01
Je ne vois pas du tout ce que tu veux dire par là. Peux-tu détailler je te prie ?Envoyé par Emmanuel Delahaye
Envoyé par koala01
Je ne vois pas du tout ce que tu veux dire par là. Peux-tu détailler je te prie ?Envoyé par Emmanuel Delahaye
Il y a deux facons de voir le typage je pense:
Il y a ta manière (niveau compilateur) et celle qui consiste à mesurer selon les conversions de type implicite que le langage authorise et sur ce plan là le C est faiblement typé
Bah, en C :Envoyé par BVertut
est correct. En C++, ça fait un scandale et il faut mettre un cast :
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *p = malloc(...):
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *p = static_cast<char *> malloc(...);
On ne dit pas le contraire, mais ca reste quand meme sérieusement plus fortement typé que le php, par exemple, qui permet dans le meme code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $variable="ma chaine"; ... $variable=3;![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Un typage fort est un typage qui peut être déterminé de manière statique (de manière explicite) avant même l'exécution.
Un typage faible est un typage qui ne peut être déterminé que de manière dynamique (de manière latente) durant l'exécution.
Aho, Ullman et Sethi ne parle même pas de typage fort ou faible, mais uniquement de vérification statique ou dynamique – Goos et Waite parlent de typage latent/faible ou manifeste/fort.
En fait, on devrait faire plus de distinction pour être clair dans le typage fort. Car effectivement, le typage du C n'est pas le même que celui du C++ qui n'est pas le même que celui de caml et pourtant ils sont tous fort/statique/explicite.
Le C est fortement typé car le type est déterminé de manière statique à la compilation. S'il était faiblement typé, il n'y aurait pas de besoin de déclarer le type des variables lors de la déclaration de celle-ci. Comme le C++ donc.
@Emmanuel Delahaye. Dans l'exemple que tu donnes on peut arguer que le type est celui d'un pointeur. Le typage fort est donc respecté. Certes on pourrait dire que le type est celui d'un pointeur sur un caractère. Mais on rentre dans des subtilités du typage fort. Cela reste du typage fort.
![]()
Je ne crois pas que la notion de typage fort ou faible soit liée au fait qu'on ait un typage statique ou dynamique. Python, par exemple, est un langage à typage dynamique mais fortement typé (Duck typing).Envoyé par Garulfo
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
pour voir si des variables sont définies, on utilise les macros du genre
.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #ifdef PI #define R 1 #ifndef #define PI 3.14 #define R 1 #endif
Commentaire : si PI n'est pas défini par l'inclusion précédente d'un en-tête le définissant, chaque fois que le préprocesseur rencontre PI dans le programme, il le remplace par 3.14, qui est la valeur prévue dans ce cas. Dans tous les cas, le rayon vaut 1.
Correct ?
Pour le typage fort/faible, pour moi le typage fort c'est le fait que l'on ne peut pas déclarer une variable comme int (entier) et lui attribuer un float (nombre à virgule flottante). Ça permet d'ajuster le code que l'on écrit à ses besoins.
FAUXEnvoyé par kromartien
ton ifndef ne marche pas. Ce qu'il faut faire pour faire ce que tu dis est :
ou si tu veux un if..else mais c'est moins élégant (répétition ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #define R 1 #ifndef PI #define PI 3.14 #endif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #ifdef PI #define R 1 #else #define R 1 #define PI 3.14 #endif
Et encore, à ce moment là, on n'a plus affaire à une variable, mais à une constante, et on ne vérifie pas si elle existe, mais si elle est définie
Sans compter que cela ne fonctionne que sur les constantes défines par macros![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Partager