Целочисленная арифметика в C++

Разработка программ на пес его знает на чем
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4631
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Целочисленная арифметика в C++

Сообщение Игорь Столяров »

Привет всем !

Вопрос для тех кто знает C++ (я его боюсь с его указателями на массив указателей и т.д.)

Сколько в C++ будет:
DWORD dwBmpWidth = ((94 + 31) / 32) * 4 = ???

В Clarion получается 15 и это неправильно.
В C++ дробные разряды в промежуточном итоге отбрасываются, если результат целочисленный ?
Т.е эквивалент в Clarion будет Int((94 + 31) / 32) * 4 ?

Заранее спасибо ! :)
«V» значит Вендетта !

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2429
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Целочисленная арифметика в C++

Сообщение Дед Пахом »

12
С уважением, ДП

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4631
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Целочисленная арифметика в C++

Сообщение Игорь Столяров »

Спасибо ! Значит все-таки в C++ дробные разряды в промежуточном итоге отбрасываются.
MSDN задрал. Все на C++. :(
«V» значит Вендетта !

Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 17:49

Целочисленная арифметика в C++

Сообщение Shur »

Игорь Столяров писал(а): В Clarion получается 15 и это неправильно.
А что правильного в C++, если
DWORD dwBmpWidth = ((94 + 31) * 4) / 32
даст скорее всего другой результат, не говоря уже о (4 / 32) * (94 +31).

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2429
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Целочисленная арифметика в C++

Сообщение Дед Пахом »

причём здесь C++? В целочисленной арифметике (x * y) / z <> (x / z) * y
С уважением, ДП

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4631
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Целочисленная арифметика в C++

Сообщение Игорь Столяров »

В одном фильме радистка, когда рожала - орала на русском.
Программист на Clarion тоже думает на том языке, что пишет. ;)
«V» значит Вендетта !

Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 17:49

Целочисленная арифметика в C++

Сообщение Shur »

Игорь Столяров писал(а): Программист на Clarion тоже думает на том языке, что пишет.
И в этом нет никакой ошибки, я думаю.

Теперь по существу. В целочисленной арифметике, вообще говоря, используются следующие операции: +, -, *, mod, div.
Так что правильно было бы записать формулу как ((94 + 31) div 32) * 4.
Ну и напишите это грамотно на Кларионе, тогда он даст вам ожидаемый вами результат.
Правильной формулой действительно будет Int((94 + 31) / 32) * 4.

Ответить