Страница 1 из 1
Целочисленная арифметика в C++
Добавлено: 28 Март 2016, 21:24
Игорь Столяров
Привет всем !
Вопрос для тех кто знает C++ (я его боюсь с его указателями на массив указателей и т.д.)
Сколько в C++ будет:
DWORD dwBmpWidth = ((94 + 31) / 32) * 4 = ???
В Clarion получается 15 и это неправильно.
В C++ дробные разряды в промежуточном итоге отбрасываются, если результат целочисленный ?
Т.е эквивалент в Clarion будет Int((94 + 31) / 32) * 4 ?
Заранее спасибо !
Целочисленная арифметика в C++
Добавлено: 28 Март 2016, 21:47
Дед Пахом
12
Целочисленная арифметика в C++
Добавлено: 28 Март 2016, 21:50
Игорь Столяров
Спасибо ! Значит все-таки в C++ дробные разряды в промежуточном итоге отбрасываются.
MSDN задрал. Все на C++.
Целочисленная арифметика в C++
Добавлено: 28 Март 2016, 23:06
Shur
Игорь Столяров писал(а): В Clarion получается 15 и это неправильно.
А что правильного в C++, если
DWORD dwBmpWidth = ((94 + 31) * 4) / 32
даст скорее всего другой результат, не говоря уже о (4 / 32) * (94 +31).
Целочисленная арифметика в C++
Добавлено: 28 Март 2016, 23:13
Дед Пахом
причём здесь C++? В целочисленной арифметике (x * y) / z <> (x / z) * y
Целочисленная арифметика в C++
Добавлено: 28 Март 2016, 23:17
Игорь Столяров
В одном фильме радистка, когда рожала - орала на русском.
Программист на Clarion тоже думает на том языке, что пишет.
Целочисленная арифметика в C++
Добавлено: 29 Март 2016, 0:38
Shur
Игорь Столяров писал(а): Программист на Clarion тоже думает на том языке, что пишет.
И в этом нет никакой ошибки, я думаю.
Теперь по существу. В целочисленной арифметике, вообще говоря, используются следующие операции: +, -, *, mod, div.
Так что правильно было бы записать формулу как ((94 + 31) div 32) * 4.
Ну и напишите это грамотно на Кларионе, тогда он даст вам ожидаемый вами результат.
Правильной формулой действительно будет Int((94 + 31) / 32) * 4.