gpt4 book ai didi

c - 如何提高大整数的变量范围?

转载 作者:行者123 更新时间:2023-11-30 21:07:29 26 4
gpt4 key购买 nike

即使在下面的代码中使用 long 之后,大整数也会显示不正确的输出,但仍然显示不正确的结果。我该如何改进?

 #include<stdio.h>
#include<conio.h>
void main()
{

long a, b, result;
a=1234;
b=19887815769532909;
result= (0.5)*(a+b)*(a+b+1)*b;
printf("%d", result);
getch();

}

但输出显示类似:-2147483648

我认为我对大数字变量做错了。我也尝试过 int long 但失败了。

请帮忙。

最佳答案

正如评论中提到的,您需要在计算中使用 longlong long 。此外,语句 result= (0.5)*(a+b)*(a+b+1)*b; 导致整数溢出,这就是为什么负值被打印到控制台的原因(尽管使用 %lld 作为格式说明符。您可以查看整数变体的范围 here 。如果可能,您还应该检查计算中的整数溢出,请阅读 this

但是,如果您想对大于标准 C 原语提供的范围的整数执行操作,您可能需要使用字符或整数数组自行实现(将高中方法转换为代码)。有很多关于它的教程。

我希望这会有所帮助。

关于c - 如何提高大整数的变量范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43550342/

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