Yes. However, it turns out it doesn't matter. I've tested with signed and unsigned 8-bit and 16-bit integers well beyond their rollovers and it works throughout. This sketch ran successfully on my uno for over an hour (I piped the serial output to a file and it was over a megabyte by the end)
#define runEvery(t) for (static typeof(t) _lasttime;\
(typeof(t))((typeof(t))millis() - _lasttime) > (t);\
_lasttime += (t))
void setup() {
Serial.begin(115200);
}
void loop() {
// char version
runEvery((int16_t) 50) {
Serial.print("50 ms Current time: ");
Serial.println(millis());
}
// int version
runEvery(5000) {
Serial.print("five seconds Current time: ");
Serial.println(millis());
}
// long version
runEvery(10ul * 60ul * 1000ul) { // ten minutes
Serial.print("Ten minutes are up! Current time: ");
Serial.println(millis());
}
}
edit: I guess I made some changes, so undoing those