2017-06-01 2 views
1

Lorsque le compilateur GNU imprime inf sur des valeurs infinies, puis-je changer cela pour une sortie différente?Valeurs infinity dans gcc

#include<stdio.h> 
{ 
    float runs = 40.0; 
    float wickets = 0.0; 

    printf("Average = %.2f(/*This is the place where I want to print NA 
    instead of inf*/)", runs/wickets); 

    return 0; 
} 
+1

Écrivez votre propre fonction pour l'impression .. –

+0

Pour votre information, vous n'avez pas besoin de '' pour cela, puisque vous n'êtes pas appeler l'une des fonctions à virgule flottante déclarées dans cet en-tête. L'opérateur de division '/' est intégré dans le langage et n'a pas besoin d'être déclaré. (Mais vous aurez besoin de '' si vous ajoutez un appel à 'isinf()'.) –

Répondre

4

Vous ne pouvez pas modifier la façon dont une valeur infinie est imprimée. Mais vous pouvez vérifier et agir en conséquence.

double avg = runs/wickets; 
if (isinf(avg)) { 
    printf("Average = NA\n"); 
} else { 
    printf("Average = %.2f\n", avg); 
} 
+0

Mais cette macro isinf ne fonctionne pas correctement quand je l'utilise pour fprintf. Je ne peux pas comprendre l'erreur: (@dbush –

+3

"Ne fonctionne pas correctement" ne veut rien dire. * Comment * ne fonctionne-t-il pas? Montrez du code avec votre tentative, la sortie attendue, et la sortie réelle – dbush

+1

@ shehan_sr: Puisque vous avez accepté la réponse, je suppose que vous avez compris le problème, quel qu'il soit –