Посмотрел в ASM - из за оптимизации (для последующего Serial.print((long)i) )под локальную переменную отводится на кадр на стеке, а 4 регистра и дальше всё проходит как с LONG. Компилятор видит что цикл бесконечный и вывод “End” в окончательном коде вообще отсутствует…
Стоит запросить адрес переменной i и фокус с регистрами у оптимизатора не выходит и всё начинает работать:
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("Start");
for (int i = 32000; i <= 32767; i++) {
Serial.print((int)&i, HEX);
Serial.print(" ");
Serial.println(i);
}
Serial.println("End"); //никогда не выполнится и в итоговый код не попадает !
}