0,7 n’est pas inférieur à 0,7 mais le résultat erroné est imprimé

Ici, ‘a’ devrait être imprimé car 0.7 <0.7 est faux, mais 'c' est imprimé.

#include void main() { float a=0.7; if(a<0.7) printf("c"); else printf("a"); } 

Vous semblez mal comprendre les nombres en virgule flottante. Voir cette question .

Une chose que vous pouvez faire est de penser “Eh bien, ce ne sera jamais exactement 0,7, alors peut-être que je ne peux pas en juger, mais je peux me rapprocher

Ensuite, vous choisissez une granularité, disons un millionième. Vous pouvez essayer de comparer le résultat arrondi entier de ie6 * a au résultat arrondi entier de 1e6 * 0.7 pour ne pas voir autant “est a < 0.7 ?", Mais "est a assez, assez proche, inférieur à 0.7 ?"

Ou simplement comparer au même type. Comme indiqué dans les commentaires, peut-être que 0.7 n’est pas un littéral float mais un double littéral. Assurez-vous qu'il s'agit d'un littéral float pour être sûr et que 'a' est imprimé.

 void main() { float a=0.7; if(a<0.7f) printf("c"); else printf("a"); }