C'est une des conneries historiques du C, à trop vouloir être proche du CPU. Bon, ils ont corrigé le tir maintenant, la spec actuelle spécifie des int8_t, int16_t, int32_t, int64_t, mais tout les compilos ne sont pas à jour, et la fainéantise fait qu'on écrit plus facilement int que int32_t.
(bon, j'espère que cette fois-ci, je n'aurai pas écrit une connerie sur la spec C...)
[^] # Re: Langage, lib et JVM
Posté par Zenitram (site web personnel) . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 1.
Example : un "int" c'est minimum 16 bits. la spec ne dit pas le maximum. Du coup, suivant l'OS (c'est plus lié à l'OS qu'au compilo), un int peut être 16 bits (sur les CPU 16 bits qu'on ne voit plus de nos jours), 32 bits (classique), ou 64 bits (sur certains OS 64 bits, mais pas tous). un "long" est minimum 32 bits, la spec ne dit pas de maximum, ça peut être 64 bits sur un OS 64 bit, ou... Pas.
http://en.wikipedia.org/wiki/C_variable_types_and_declarations#Size
http://en.wikipedia.org/wiki/64-bit#Specific_C-language_data_models
C'est une des conneries historiques du C, à trop vouloir être proche du CPU. Bon, ils ont corrigé le tir maintenant, la spec actuelle spécifie des int8_t, int16_t, int32_t, int64_t, mais tout les compilos ne sont pas à jour, et la fainéantise fait qu'on écrit plus facilement int que int32_t.
(bon, j'espère que cette fois-ci, je n'aurai pas écrit une connerie sur la spec C...)