子序列的和 中的陷阱(溢出)

当输入65536 655360时,程序会出错。
原因是因为溢出,不是因为n,m的溢出(int的范围是-2147483648 ~ +2147483647 )
而是while循环中的for循环里的 i变量,所以我们要把 i 变量设置为long long。

#include<iostream>
using namespace std;
int main(){
    long long n=1,m=1;
    float sum;
    while(n!=0&&m!=0)
    {   
        sum=0;
        cin>>n>>m;
        for(long long i=n;i<=m;i++)
            sum+=(1.0/(i*i));
        cout<<sum<<endl;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,081评论 0 2
  • 学习C语言程序设计都会用到高等数学知识和计算机基础理论知识。 使用可变参数应该有以下步骤: 1)首先在函数里定义一...
    皓小天阅读 6,069评论 0 2
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 14,027评论 0 89
  • The Integer class wraps a value of the primitive type int...
    0x70e8阅读 627评论 0 0
  • 有一位老人,这位老人刚刚做过一次大病的手术。在一个海湾边,我还清楚的记得那个场景。他跟我说:“到了我这把岁数...
    罗森咖啡书屋阅读 315评论 0 3

友情链接更多精彩内容