Проблемы с умножением на 10000

alextlt
Offline
Зарегистрирован: 19.11.2016

Всем добрый.

Казалось бы простейший скетч 

void setup() {
  Serial.begin(57600);
}
void loop() {
  Serial.println(7*10000);
  delay(1000);
}
По идее должен написать 70000.
А пишет 4464.
При чем именно при умножении чисел от 4 до 9 на 10000 выдает неверный результат, даже отрицательный( например 5*10000=-15536. Умножение на 1000 или 100000 вопросов не вызывает. Даже если написать 7*100*100 тоже выдает 4464.
Перепробовал разные компьютеры, разные версии arduino ide, разные платы uno и nano - результат тот же.
Поэкспериментировал с 20000,30000 - тоже самое. На 40000 дал верный ответ.
Вообщем какой то бред.
Пока вышел из ситуации так:
x=7*100;
x=x*100;
 
Кто что думает по этому поводу?
Stephan
Offline
Зарегистрирован: 01.10.2015

Было уже, добавь UL
Serial.println(7UL*10000);

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Я бы написал так:   Serial.println( (uint32_t)7*10000);

alextlt
Offline
Зарегистрирован: 19.11.2016

Спасибо за оперативность

попробую

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

alextlt пишет:

попробую

Так чого його пробувати, сало - воно сало і є!