Le due forme sono uguali per quanto riguarda l'overflow e sono corrette.
La differenza, invece, sta nel fatto che la seconda non risente dei tempi di esecuzione, perciò è più precisa:
if ((millis() - t_prec) > intervallo) {
t_prec = millis();
// Eseguo qualcosa
}
if ((millis() - t_prec) > intervallo) {
t_prec += intervallo;
// Eseguo qualcosa
}
Nel primo caso, t_prec viene aggiornato a millis(), che ha un istante di ritardo, tanto più se non viene messa come prima operazione da eseguire; nel secondo caso, invece, viene sommato sempre l'intervallo indipendentemente da eventuali ritardi. Considera che
millis() = t_prec+intervallo
infatti nel primo caso si ha:
t_prec = millis()
e nel secondo:
t_prec = t_prec+intervallo