Io
No, diciamo tutti e due, lesto non ha spiegato tutto.
Prova questo codice:
void setup() {
delay(2000);
Serial.begin(19200);
}
void loop() {
byte a;
a=15000*35000;
Serial.println(a, DEC);
delay(2000);
}
1500035000=525000000, che è un numero a 28 bit. Eppure il terminale stampa ancora un valore coretto.
64
Che è appunto 525000000&255 (ossia i primi 8 bit) del numero.
Se invece provi con
a=150000350000;
otterrai 0.
questo perché il risultato non può essere contenuto in 32 bit, il tipo di dati più grandi gestibile dall'Atmega e va in overflow, dando come risultato 0. Quindi l'overflow viene ignorato (o per meglio dire non si verifica) solo finché il risultato è contenibile in un dato gestibile dal micro.