Frage

Wenn ich das benutze

#include<time.h>
//...
int n = time(0);
//...

Ich bekomme eine Warnung vor der Umwandlung von Zeit in int. Gibt es eine Möglichkeit, diese Warnung zu entfernen?

War es hilfreich?

Lösung

Die Zeit kehrt zurück time_t und nicht ganzzahlig. Verwenden Sie diesen Typ vorzugsweise, weil er möglicherweise größer ist als int.

Wenn Sie wirklich brauchen int, typern Sie es dann explizit, zum Beispiel:

int n = (int)time(0);

Andere Tipps

Ja, ändere n zu a time_t. Wenn Sie sich die Unterschrift rechtzeitig ansehen.

#include<time.h>
//...
time_t n = time(0);
//...

Beachten Sie, dass Arak ist richtig: Es ist ein Problem, ein 32 -Bit -Int zu verwenden, mindestens ein Problem, Aufgrund des 2038 -Fehlers. Sie sollten jedoch berücksichtigen, dass jede Art von Arithmetik auf einer Ganzzahl N (und nicht einer Zeit_T) nur die Wahrscheinlichkeit erhöht, dass Ihr Code diesen Fehler frühzeitig stolpert.

PS: Für den Fall, dass ich in der ursprünglichen Antwort nicht klar gemacht habe, besteht die beste Antwort auf eine Compiler -Warnung fast immer darin, die Situation anzugehen, über die Sie gewarnt werden. Wenn Sie beispielsweise höhere Präzisionsdaten in eine niedrigere Präzisionsvariable erzwingen, verlieren Sie Informationen - der Compiler versucht Sie zu warnen, dass Sie möglicherweise gerade einen Landmine -Fehler erstellt haben, über den jemand erst viel später stolpert.

Ich denke, Sie verwenden visuell C ++. Die Rückgabeart von time(0) ist 64bit int Auch wenn Sie programmieren für 32bit Plattform ähnlich g++. Um die Warnung zu entfernen, geben Sie einfach zu time(0) zu 64bit Variable.

Sie möchten wahrscheinlich eine Art Time_t anstelle eines int verwenden.

Siehe das Beispiel bei http://en.wikipedia.org/wiki/time_t.

Der Grund dafür ist, dass Time () Funktionen eine Zeit für die Zeit zurückgeben, sodass Sie in diesem Fall möglicherweise eine statische Besetzung für eine INT oder Uint durchführen müssen. Schreiben Sie auf diese Weise:

time_t timer;
int n = static_cast<int> (time(&timer)); // this will give you current time as an integer and it is same as time(NULL)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top