frank: C/C++ Befehl time(NULL) falscher Wert?

Beitrag lesen

uint8_t stamp[4] ;

stamp ist hier deklariert als ein Pointer auf einen uint8_t-Wert.

* stamp = time(NULL);

Diese Zeile erzeugt links einen uint8_t-Wert und weist diesem eine größere Zahl zu. Was davon nicht in 8 Bit passt, wird abgeschnitten.

cout << "stamp: " << (unsigned long)&stamp  << ends;

Diese Zeile gibt nicht den Wert von stamp aus, sondern die Adresse an der der Pointer stamp gespeichert ist.

Korrekt wäre:

uint8_t stamp[4];
*(unsigned long*)stamp = time(NULL);
cout << "stamp: " << *(unsigned long*)stamp << endl;

Oder ganz einfach:

time_t stamp = time(NULL);
cout << "stamp: " << stamp << endl;