Всем привет! Что-то я ничего не понимаю... Задача простая - умножить переменную на 1000. Но в зависимости от величины переменной результат какой-то неадекватный получается. Например при значении переменной до 32 (включительно) всё умножается нормально получается: 32000. А если значение переменной больше, то получаются какие-то отрицательные значения, например при 35 результат получается: -30536 При изменении типа переменных, диапазон адекватного вычисления увеличивается, но с определенной величины опять отрицательные значения. Что я делаю не так? Сам код: Код (C++): int aaaa; int bbbb; void setup() { // put your setup code here, to run once: Serial.begin(9600); aaaa = 35; bbbb = aaaa * 1000; } void loop() { // put your main code here, to run repeatedly: delay (500); Serial.println(aaaa); Serial.println(bbbb); }
Нагуглил, что у int максимальное, значение: 32767, у unsinged int 65535. Но почему не работает с long? Результат по коду ниже получается: 4464 Код (C++): int aaaa; long bbbb; void setup() { // put your setup code here, to run once: Serial.begin(9600); aaaa = 70; bbbb = aaaa * 1000; } void loop() { // put your main code here, to run repeatedly: delay (500); Serial.println(aaaa); Serial.println(bbbb); }