2017-09-29 7 views
2

Je veux savoir ce qui se passe quand on n'initialise pas une variable ieeefloat64 en C++.que se passe-t-il si la variable ieeefloat64 n'est pas initialisée en C++?

IEEE_FLOAT64 x; 
cout << x; 

A partir de maintenant, je reçois la sortie sous la forme -9.255963E + 061. Est-ce une valeur indésirable aléatoire?

+1

Nous obtenons un comportement indéfini (si IEEE_FLOAT64 n'est pas une classe avec un constructeur par défaut qui s'initialise). – geza

+1

Qu'est-ce que 'IEEE_FLOAT64'? Comment est-ce défini? – NathanOliver

+0

IEEE_FLOAT64 est un type de données défini par les normes IEEE, qui fournit une double précision et est utilisé comme unités flottantes matérielles @ NathanOliver –

Répondre

1

Cela dépend du compilateur. Visual C++ l'initialisera à 0 s'il est en mode débogage, mais le laissera non initialisé s'il s'agit du mode de libération. Si elle n'est pas initialisée sa valeur peut être quelque chose, alors ne le faites pas.

+0

Je reçois -9.255963E + 061. qu'est-ce que cette valeur signifie? Est-ce une valeur indésirable? –

+0

Oui. C'est parce que vous ne l'avez pas défini, vous obtenez ce qui s'est passé en mémoire avant que la variable ait été allouée à cette mémoire. 'IEEE_FLOAT64 x (0);' va résoudre le problème. –

+0

Mais si c'est une valeur indésirable aléatoire, alors pourquoi ai-je obtenir la même valeur chaque fois que je lance l'application? –