В моем случае произведение двух чисел INT_MAX равно 296447233, что неверно.
296447233
long long int product = 0; product = 2137483647 * 2137483647; printf("product: %lli\n", product);
Что я делаю не так и как это исправить ?? Спасибо!
Оба ваших 2137483647 имеют тип int. Таким образом, они остаются такого типа и переполнены.
2137483647
int
Сделать их long long с:
long long
product = 2137483647LL * 2137483647LL;
или актерский состав:
product = (long long)2137483647 * 2137483647;
Попробуйте
, чтобы убедиться, что компиляция обрабатывает числа как длинные long