2016-05-22 8 views
-4

Hier ist Zeile in C geschrieben und geht so.Warum meine Ausgabe in printf -nan und 0.0000 C Sprache

//declarations 
int hr, min; 
float CHSnow [143]; 
float ETime [143]; 
int Timer; 
int CCSc; 

printf("V, %i : %i je aktuálna výška snehu na letisku %f a odhadovaný čas pre bezpečné pristátie je %f minút \n", hr, min, CHSnow[Timer], ETime[CCSc]); 

Der Ausgang geht wie folgt: V, 0: 10 je aktualna výška snehu na letisku -nan a odhadovaný čas pre bezpečné pristátie je 0.000000 minút.

Ich frage Sie, was könnte schief gehen in diesem Fett Ausgabevariablen? Danke, Matoosh

+0

Dies ist ruhig unvollständig. Was sind: CHSnow, Timer, ETime und CCSc. Dies ist kein Ratespiel. – alk

+1

Sie waren lange genug Mitglied, um [gute Fragen zu stellen] (http://stackoverflow.com/help/how-to-ask) und ein [minimales, vollständiges und überprüfbares Beispiel] zu erstellen. (http://stackoverflow.com/help/mcve). –

Antwort

1

In Gleitkommazahlen, NaN ist ein Akronym für „Not a Number“, die in der Regel mit Gleitkommazahlen, indem Sie einen ungültigen Betrieb führt. Wenn die Nummer nicht darstellbar ist, wird nan gedruckt.

Dies kann aufgrund nicht initialisierter Daten oder eines ungültigen Vorgangs auftreten.

Wie für die "falsche" 0,000000, gibt es buchstäblich nichts, was ein Stackoverflow Ihnen sagen kann, dass Sie nicht wissen, da wir nicht den vollständigen Code haben, um zu sehen.

Haben Sie versucht, den Code zu debuggen?

+0

Danke, ich habe festgestellt, dass es genau NAN wegen der 0 ist. Haltepunkt 1, Haupt() bei let.c: 150 \t \t \t CHSnow [Timer] = SSnow/N;/* vypocet */ (gdb) Drucken N $ 1 = 0 (gdb) drucken SSnow $ 2 = 0 (gdb) – Dankonino