#1 Re: Апаратні питання » Баг процессора ? » 2017-03-05 10:58:15

Сори, погорячился.
Правильный ответ:

long t = 200 * 100 *2L;

Компилер не смотря на тип переменной приемника значения не понимает и вычисляет промежуточные значения как 16-битные, в результате переполнение и остаток как результат.

Будьте внимательны при вычислениях с большими числами, особенно когда промежуточные значения большие, а конечный результат помещается в меньшую битность. Порежет.

#2 Апаратні питання » Баг процессора ? » 2017-03-05 10:45:11

Andrii
відповідей: 5

Всем доброго дня!

Arduino Mega2650 rev3 (clone)

Натолкнулся на такую штуку: не правильно умножает. Вынес в отдельный скетч. Подтвердилось. Прошу проверить на своих девайсах.

void setup() {
  Serial.begin(9600);
  long t=200*100*4;
  Serial.println(t);
  t=80000;
  Serial.println(t);
}

void loop() {
}

На сериал-мониторе:
14464
80000

Бред. Или баг.

Підвал форуму