И это всё МОЁ

Задача. Монотонно растущий счетчик времени который в какой то момент может переполнится.
Код делает типовые операции

uint16_t startTime = millis();
...
uint16_t stopTime = millis();
uint16_t runSpeed = stopTime - startTime;

Вопрос что будет если startTime будет равно 65535 а stopTime будет равно 1?
Какой будет runSpeed?
Код теста
//# ./a 1 - 65535
#include <stdio.h>
#include <stdint.h>

int main(int argc, char * argv[]) {
uint16_t a = atoi(argv[1]);
uint16_t b = atoi(argv[3]);

printf("%d", (uint16_t)(a - b));

return 0;
}

Итого все хорошо 1 - 65535 будет равно 2 как и предполагалось. Спасибо бинарной логике процессора. И никаких лишних проверок сравнений лепить не надо.








 ,