在我的情况下,两个INT_MAX数字的乘积是296447233,这是不正确的。

long long int product = 0;
product = 2137483647 * 2137483647;
printf("product: %lli\n", product);

我在做什么错了,以及如何纠正呢?
谢谢 !

最佳答案

您的2137483647都属于int类型。因此,它们保持该类型并溢出。

将它们设置为long long:

product = 2137483647LL * 2137483647LL;

或 Actor :
product = (long long)2137483647 * 2137483647;

关于c++ - C/C++中两个INT_MAX numbes的乘积不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9504477/

10-09 13:45