gpt4 book ai didi

c - 为什么在乘法中使用 long int 会产生一个奇怪的数字?

转载 作者:行者123 更新时间:2023-12-02 21:32:03 25 4
gpt4 key购买 nike

编译此代码后:

#include <stdio.h>

int main()
{

long int a = 1000 * 1000 * 1000 * 1000 * 1000 * 1000;
printf("%i\n", a);

return 0;
}

结果是我得到-1486618624。我怎样才能使这段代码工作?

预先感谢您的回答!

最佳答案

您指定的 1000 实例是 int,因此乘法是通过将 int 相乘并得到 int。在分配给 long int 之前,它就溢出了。尝试:

long int a = 1000L * 1000L * 1000L * 1000L * 1000L * 1000L;

您还需要使用long int 格式打印答案,例如:

printf("%ld\n", a);

请注意,long int 也可能太小(如果您在某些 32 位平台上,long int 中可存储的最大容量为 2^31 - 1,而在 64 位平台上,2^63 - 1 就足够了),在这种情况下尝试:

long long int a = 1000LL * 1000LL * 1000LL * 1000LL * 1000LL * 1000LL;
printf("%lld\n", a);

关于c - 为什么在乘法中使用 long int 会产生一个奇怪的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22125437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com