int i = 0;
long L = 0;
i=40 ;
L=i*1000; // умножаю int=40 на 1000 и ложу его в переменную long
Serial.println(L);
Результат будет 40000 ? Нет!!!
В результате получаю -25536 !!! Все потому, что 40000 не влазит в диапазон типа данных int (от -32768 до 32767).
Для получения желаемого результата 40000 нужно применять такой код:
L=long(i)*1000 ; // првожу число i к типу данных long
Serial.println(L);
Причина фокуса проста: int * int. Если один из аргументов будет long, то всё будет ОК
ОтветитьУдалитьТак что можно чуточку проще сделать:
L = i * 1000L;