C/C++中两个INT_MAX编号的乘积不正确

Incorrect product of two INT_MAX numbes in C/C++

本文关键字:编号 MAX 不正确 INT 两个 C++      更新时间:2023-10-16

在我的例子中,两个INT_MAX数字的乘积是296447233,这是不正确的。

long long int product = 0;
product = 2137483647 * 2137483647;
printf("product: %llin", product);

我做错了什么,如何纠正??谢谢

您的两个2137483647都属于int类型。所以它们保持这种类型并溢出。

使它们成为long long s:

product = 2137483647LL * 2137483647LL;

或铸造:

product = (long long)2137483647 * 2137483647;

尝试

product = 2137483647LL * 2137483647LL; 

以确保编译将数字视为长