• [^] # Re: Bonne nouvelle

    Posté par (site web personnel) . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    Je te parles pas de bugs qui peuvent effectivement survenir si on utilise pas les bonnes constantes : je te parle tout simplement de comportement différents, et donc pas forcement prévu, d'une plateforme à l'autre : cela donne un code qui n'est pas portable, puisque par définition avec un comportement différent.
    Imagine que tu codes un logiciel qui a une feature dont la capacité dépend d'un int : tu vas dire à ton client "oui bah euh cette fonctionnalité dépend de la machine sur laquelle vous exécuter le logiciel... J'ai un tableau à 6 colonnes et 8 lignes pour les différentes situations si vous voulez".
    INT_MAX ne change rien au problème : sa valeur diffère elle aussi d'une plateforme à l'autre.
    En Java ou en C#, Integer.MAX_VALUE ou Int32.MaxValue sont des constantes qui ont toujours les mêmes valeurs, sur toutes les plateformes : bref le code associé aura toujours le même comportement et le résultat sera prévisible : le code est bien portable.
    Pour celà, ces langages définissent une véritable abstraction de la machine physique, une machine virtuelle. Le C, par définition, autorise les optimisations bas-niveau qui dépendent du hardware : le C n'offre pas, par définition, la garantie d'un code portable, c'est au codeur de s'en assurer.