fork download
  1. #include <cstdint>
  2. #include <iostream>
  3. #include <limits>
  4.  
  5. using namespace std;
  6.  
  7. static uint32_t current_time = numeric_limits<uint32_t>::max() - 1000;
  8.  
  9. uint32_t millis() {
  10. return current_time;
  11. }
  12.  
  13. void advance_time(uint32_t amount) {
  14. cout << "... time advances by " << amount << "ms ..." << endl;
  15. current_time += amount;
  16. }
  17.  
  18. int main() {
  19. uint32_t curr_millis = millis();
  20. cout << "millis() = " << millis() << endl;
  21.  
  22. uint32_t next_gps_update = millis() + 1000;
  23. cout << "next_gps_update = millis() + 1000 = " << next_gps_update << " (unsigned: " << uint32_t(next_gps_update) << ")" << endl;
  24.  
  25. advance_time(1);
  26.  
  27. cout << "millis() = " << millis() << endl;
  28. cout << "int32(millis() - next_gps_update) = " << int32_t(millis() - next_gps_update) << endl;
  29. cout << "int32(millis() - next_gps_update) >= 0 = " << (int32_t(millis() - next_gps_update) >= 0) << endl;
  30.  
  31. advance_time(998);
  32.  
  33. cout << "millis() = " << millis() << endl;
  34. cout << "int32(millis() - next_gps_update) = " << int32_t(millis() - next_gps_update) << endl;
  35. cout << "int32(millis() - next_gps_update) >= 0 = " << (int32_t(millis() - next_gps_update) >= 0) << endl;
  36.  
  37. advance_time(10);
  38.  
  39. cout << "millis() = " << millis() << endl;
  40. cout << "int32(millis() - next_gps_update) = " << int32_t(millis() - next_gps_update) << endl;
  41. cout << "int32(millis() - next_gps_update) >= 0 = " << (int32_t(millis() - next_gps_update) >= 0) << endl;
  42.  
  43. next_gps_update = millis() + 1000;
  44. cout << "next_gps_update = millis() + 1000 = " << next_gps_update << " (unsigned: " << uint32_t(next_gps_update) << ")" << endl;
  45.  
  46. advance_time(10);
  47.  
  48. cout << "millis() = " << millis() << endl;
  49. cout << "int32(millis() - next_gps_update) = " << int32_t(millis() - next_gps_update) << endl;
  50. cout << "int32(millis() - next_gps_update) >= 0 = " << (int32_t(millis() - next_gps_update) >= 0) << endl;
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
millis() = 4294966295
next_gps_update = millis() + 1000 = 4294967295 (unsigned: 4294967295)
... time advances by 1ms ...
millis() = 4294966296
int32(millis() - next_gps_update) = -999
int32(millis() - next_gps_update) >= 0 = 0
... time advances by 998ms ...
millis() = 4294967294
int32(millis() - next_gps_update) = -1
int32(millis() - next_gps_update) >= 0 = 0
... time advances by 10ms ...
millis() = 8
int32(millis() - next_gps_update) = 9
int32(millis() - next_gps_update) >= 0 = 1
next_gps_update = millis() + 1000 = 1008 (unsigned: 1008)
... time advances by 10ms ...
millis() = 18
int32(millis() - next_gps_update) = -990
int32(millis() - next_gps_update) >= 0 = 0