Почему ардуино не правильно умножает?

Rento
Offline
Зарегистрирован: 20.05.2022

int a=60;
int b=1000;
long c;

void setup() {
 Serial.begin(9600);
}

void loop() {
c= a * b;
 Serial.println(c);
}

 

Почему ардуино не правильно умножает?

В сериал порт выводится -5536, почему так?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

патамушта 60000 - 65536 = -5536

Rento
Offline
Зарегистрирован: 20.05.2022

Но там же long c, он должен быть -2 147 483 648...2 147 483 647

Или не так?

Rento
Offline
Зарегистрирован: 20.05.2022

Даже если просто писать, все равно выходит неверно

long c;
void setup() {
 Serial.begin(9600);
}
void loop() {
c= 60 * 1000;
 Serial.println(c);
}

 

rkit
Offline
Зарегистрирован: 23.11.2016

потому что нужно читать правила приведения типов

sadman41
Offline
Зарегистрирован: 19.10.2016

c= 60 * 1000L; // >> L <<

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Rento пишет:
почему так?

Патамучто Вы не читаете, а ютюб смотрите.

Rento
Offline
Зарегистрирован: 20.05.2022

Спасибо большое=)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Rento пишет:

Спасибо большое=)

мы поверили в тебя )))
 

int a=60;
int b=1000;
long c;

void setup() {
 Serial.begin(115200);
}

void loop() {
c= (long)a * b;
 Serial.println(c);
 delay(1000);
}

 

Iv_
Iv_ аватар
Offline
Зарегистрирован: 06.04.2022

А микропроцесор исправный, вообще способен производить не правильные математические операции?

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Iv_ пишет:
А микропроцесор исправный, вообще способен производить не правильные математические операции?

Нет. Вообще, что процессор, что микропроцессор - железяки абсолютно тупые и никогда не делают то, что вы от них хотите. Они делают исключительно и ТОЛЬКО то, что вы им задали сделать. Т.е. в любых проблемах ищите только свои ошибки )))

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ua6em пишет:

Rento пишет:

Спасибо большое=)

мы поверили в тебя )))
 

int a=60;
int b=1000;
long c;

void setup() {
 Serial.begin(115200);
}

void loop() {
c= (long)a * b;
 Serial.println(c);
 delay(1000);
}

Ай шаман! Ну прям шаман не иначе! )))

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

Iv_ пишет:
А микропроцесор исправный, вообще способен производить не правильные математические операции?

А то! Поройтесь по темам, много найдёте! Даже компилировать неправильно могут. Особенно, если китайские :-)

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Она с...а и складывает не верно !

void setup() {
  Serial.begin(115200);
  Serial.println(30000+30000);
  Serial.println(22000+22000+22000);
}

void loop() {  
}

 

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

Komandir пишет:

Она с...а и складывает не верно !

Кетай :-(

Вот на амперке разбирали, что стоит взять оригинальную, так сразу работает что, что на кетае даже не компилировалось :-(

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

Вот на амперке разбирали, что стоит взять оригинальную, так сразу работает, что на кетае даже не компилировалось :-(

поэтому контроллер для дрона (APM2.6, APM2.8) на оригинальной меге?