Это неопределенное поведение, если промежуточный результат выражения переполняется?
Этот вопрос является результатом другогоТАК вопрос.
Пример кода
#include
int main()
{
unsigned long b = 35000000;
int i = 100;
int j = 30000000;
unsigned long n = ( i * j ) / b; // #1
unsigned long m = ( 100 * 30000000 ) / b; // #2
std::cout < n < std::endl;
std::cout < m < std::endl;
}