J'ai bien compris les différences, mais je me pose une question au niveau "efficacité" du code compilé.
Extrait d'un wiki :
La plupart du temps, c'est à dire avec les processeurs qui fonctionnent en 16 bits ou plus, c'est bien cela ? (ce qui est le cas sur tous les pc "modernes")Si vous ne savez pas quel type donner à une variable de type entier, le type int est par défaut le meilleur choix (à condition que votre donnée ne dépasse pas 215-1) : ce type est la plupart du temps représenté au niveau matériel par un « mot machine », c'est-à-dire qu'il est adapté à la taille que la machine peut traiter directement (il fait usuellement 32 bits sur un PC 32 bits, par exemple). Cela permet un traitement plus rapide par le matériel. De plus, beaucoup de bibliothèques (que ce soit celle fournie par le langage C ou d'autres) utilisent ce type pour passer des entiers, ce qui fait que l'utilisation de ces bibliothèques sera plus aisée.
Plage de valeur minimale garantie pour int selon la norme en complément à 2 (CLP2) : (-2^15 à (2^15) - 1 ) inclus.
En règle générale si on utilise un type X dont la plage garantie par la norme C est inférieure/supérieure à la plage que peut fournir un "mot machine", on augmente artificiellement le traitement de ce type X, par rapport à si on avait utilisé le type "int" ?
Mais le programme compilé en C utilise moins/plus de mémoire ?
J'ai bien conscience qu'il faut avant toute chose utiliser le type approprié, par ex utiliser "int" pour des opérations arithmétiques entières, et "char" pour des caractères. Sous réserve bien sûr que la plage d'utilisation est suffisante.
Et qu'il y a bien d'autres choses plus importantes à se soucier avant d'en arriver là.
Mais j'aime bien savoir ce qui se passe, surtout que le C apporte divers niveaux d'abstraction possible, dont un niveau d'abstraction très près de la machine que je n'avais pas encore connu jusque là.
Partager