diviser par zéro de la programmation en c

J'ai une question sur le code suivant:

int main { 
double x = 0;
double y = 0/x;

if(y==1) {.....}
....
....
return 0;
}

Lorsque j'exécute le code sur mon ordinateur, je n'ai pas d'erreur à l'exécution, et je vois que y = -nan(0x8000000000000). Pourquoi il n'est pas une erreur d'exécution de diviser par zéro?

De plus, quand j'ai modifier la première ligne int x = 0;
maintenant, il y a une erreur d'exécution. Quelle est la différence?

Non, l'annexe F de la norme C99 remplace ce n'est pas un comportement indéfini pour les calculs en virgule flottante. Pas toutes les implémentations de soutien à l'annexe F, mais la vôtre et la mienne ne.

OriginalL'auteur wantToLearn | 2012-10-28