就我而言,两个INT_MAX号码的乘积为296447233
,这是不正确的。
long long int product = 0;
product = 2137483647 * 2137483647;
printf("product: %lli\n", product);
我做错了什么,以及如何纠正它? 谢谢!
答案 0 :(得分:14)
您的2137483647
都属于int
类型。所以他们保持这种类型并且溢出。
让他们long long
s:
product = 2137483647LL * 2137483647LL;
或演员:
product = (long long)2137483647 * 2137483647;
答案 1 :(得分:6)
尝试
product = 2137483647LL * 2137483647LL;
确保编译将数字视为长的