en langage de programmation C, la constante de point flottant est double type par défaut de Je suppose Lorsque je les essaie sous GCC avec -Wall: p>
Donc, 3.1415 code> est double type, sauf si vous utilisez le suffixe 'F' ou 'F' pour indiquer le type de flotteur.
const float pi = 3.1415 code> entraînera un avertissement, mais non. P>
f: 3.141593
d: 3.141593
f: 3.141593
i: 3
3 Réponses :
et c'est ce qui se passe sous la hotte: p> % f code> peut être utilisé avec
float code> et
double code>. Si vous souhaitez plus d'utiliser plus de précision
Cela ne devrait-il pas être % lf code> pour un double?
@sharth: lf code> et
f code> sont différents pour
scanf code> mais identique dans
printf code>
Aussi, votre utilisation de -wall code> ne permet pas d'avertir des avertissements sur la perte de précision, de la troncature des valeurs, etc. Parce que ces avertissements sont ennuyeux et "la fixation" nécessite d'encombrer le code correct avec des tas de moulages laids. Si vous souhaitez des avertissements de cette nature, vous devez leur permettre explicitement. P>
printf code> n'a rien à voir avec la précision des variables réelles, juste la précision
printf code> est imprimée à 6 places après la point décimal. p>
La nature variable de printf code> garantit que les flotteurs sont implicitement couplés aux doubles lorsqu'il est passé?
Oui, bien que cela soit plutôt sans rapport avec la question de OP.
Je me demande, ce qui est plus grand: le nombre d'erreurs qui «perte de précision éventuelle de la précision du double à flotter» se détendent ou le nombre d'erreurs qui résultent lorsque Code un programmeur qui doit explicitement forcer beaucoup de choses à float Code> Pour rendre le compilateur heureux, forces également à
Float code> quelque chose qui n'aurait pas dû être [par exemple
Const float onomeh = 1.0f / 10.0f; VALEUR DE FLOAT1 = 8.0F * ONETHIÈME; Double Value2 = 4.0f * -etih; code> Notez que si
onome- code> aurait pu être
double code>, tout aurait fonctionné parfaitement.
Si vous voulez obtenir des avertissements pour cela, je pense que Si vous utilisez OS X, -wonversion code> les signale dans Mainline GCC-4.3 et ultérieure. P>
-WSHORTEN-64-TO 32 CODE> a marqué dans la GCC d'Apple depuis GCC-4.0.1. Je crois que Clang correspond cependant au comportement Mainline GCC. P>