Bonjour, tout est dans le titre.
Pourquoi l'écriture de 2f ne fonctionne pas en C et l'on doit écrire 2.0f ?
J'ai l'impression que c'est juste ennuyeux pour rien, non ?
Bonjour, tout est dans le titre.
Pourquoi l'écriture de 2f ne fonctionne pas en C et l'on doit écrire 2.0f ?
J'ai l'impression que c'est juste ennuyeux pour rien, non ?
Bonjour,
Mais non, cette règle n'a pas été inventée pour t'embêter.
Si on écrit 2L est-ce l'entier long 2 ou bien le long double 2?
On voit que dans le cas de la lettre L, il est vital de distinguer 2L de 2.L.
Il faut prendre l'habitude d'avoir un nombre clairement entier ou clairement flottant avant le suffixe, sinon ça donne des règles de syntaxe capillotractées.
On peut quand même écrire 2.f ou 2e0f ou .2e+1f ou 2.0f.
Merci pour cette explication, je me demandais car en C# il est possible d'écrire 2f, 2d ou encore 2L
C# a fait évoluer les suffixes, et a choisi d'imposer au moins un chiffre avant et après le point décimal.
Il semblerait que chaque langage veuille mettre sa marque, et en effet on pourrait se demander si le but n'est pas d'ennuyer pour rien!
Si les cons volaient, il ferait nuit à midi.
Bonjour,
Siproduit une erreur de syntaxe, c'est parce que le C ne comprend pas l'intention du programmeur et considère qu'il y a une incohérence entre le suffixe f explicitement indiqué par le programmeur et la constante littérale qui lui est associée, qui est aussi explicitement représentée sous la forme d'un entier. Du coup, le compilateur ne sait pas comment il doit interpréter cette contradiction et stoppe la compilation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part float f = 2f;
En revanche, il est parfaitement licite d'écrirelequel ne produira pas d'erreur de compilation, car le C fera une promotion implicite de type en considérant que le programmeur sait ce qu'il fait. Ce code équivaut à dire au compilateur : je te donne un entier, que je te demande de transformer en float pour affecter le résultat de cette transformation à la variable f. Cette "intelligence" du compilateur C n'en est pas vraiment une, c'est juste que ces promotions de type sont prévues par le standard. Le compilateur n'est simplement pas en mesure de le faire dans le cas précédent car il a affaire à une contradiction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part float f = 2;
Ce cas est aussi une illustration de ce que, pour le langage C, le programmeur "a toujours raison" et sait (ou devrait savoir) pertinemment ce qu'il fait.
Eks
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager