如何改善大整数的变量范围?

时间:2017-04-21 19:13:48

标签: c

即使在波纹管代码中使用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但失败了。

请帮忙。

1 个答案:

答案 0 :(得分:0)

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

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

我希望这会有所帮助。