Целочисленная арифметика в C++
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Целочисленная арифметика в C++
Привет всем !
Вопрос для тех кто знает C++ (я его боюсь с его указателями на массив указателей и т.д.)
Сколько в C++ будет:
DWORD dwBmpWidth = ((94 + 31) / 32) * 4 = ???
В Clarion получается 15 и это неправильно.
В C++ дробные разряды в промежуточном итоге отбрасываются, если результат целочисленный ?
Т.е эквивалент в Clarion будет Int((94 + 31) / 32) * 4 ?
Заранее спасибо !
Вопрос для тех кто знает C++ (я его боюсь с его указателями на массив указателей и т.д.)
Сколько в C++ будет:
DWORD dwBmpWidth = ((94 + 31) / 32) * 4 = ???
В Clarion получается 15 и это неправильно.
В C++ дробные разряды в промежуточном итоге отбрасываются, если результат целочисленный ?
Т.е эквивалент в Clarion будет Int((94 + 31) / 32) * 4 ?
Заранее спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Целочисленная арифметика в C++
Спасибо ! Значит все-таки в C++ дробные разряды в промежуточном итоге отбрасываются.
MSDN задрал. Все на C++.
MSDN задрал. Все на C++.
За теми кто отстал - не возвращаться. (С) Кодекс
Целочисленная арифметика в C++
А что правильного в C++, если
DWORD dwBmpWidth = ((94 + 31) * 4) / 32
даст скорее всего другой результат, не говоря уже о (4 / 32) * (94 +31).
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
Целочисленная арифметика в C++
причём здесь C++? В целочисленной арифметике (x * y) / z <> (x / z) * y
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Целочисленная арифметика в C++
В одном фильме радистка, когда рожала - орала на русском.
Программист на Clarion тоже думает на том языке, что пишет.
Программист на Clarion тоже думает на том языке, что пишет.
За теми кто отстал - не возвращаться. (С) Кодекс
Целочисленная арифметика в C++
И в этом нет никакой ошибки, я думаю.
Теперь по существу. В целочисленной арифметике, вообще говоря, используются следующие операции: +, -, *, mod, div.
Так что правильно было бы записать формулу как ((94 + 31) div 32) * 4.
Ну и напишите это грамотно на Кларионе, тогда он даст вам ожидаемый вами результат.
Правильной формулой действительно будет Int((94 + 31) / 32) * 4.