90 votes

Cette optimisation en virgule flottante est-elle autorisée ?

J'ai essayé de vérifier où float perd la capacité de représenter exactement de grands nombres entiers. J'ai donc écrit ce petit extrait :

 int main() {
    for (int i=0; ; i++) {
        if ((float)i!=i) {
            return i;
        }
    }
}

Ce code semble fonctionner avec tous les compilateurs, à l'exception de clang. Clang génère une boucle infinie simple. Godbolt .

Est-ce autorisé ? Si oui, est-ce un problème de QoI ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X