为什么加上double就会有输出

发布于 2022-09-11 17:19:56 字数 867 浏览 7 评论 0

环境:codeblock
编译环境:mingw32-gcc.exe -pedantic -Wextra -Wall -std=c99 -c path
代码:

#include <stdio.h>

int main(){
    FILE *fin, *fout;
    fin = fopen("data.in","rb");
    fout = fopen("data.out","wb");
    int m, n;
    int line = 1;
    while(fscanf(fin, "%lld%lld", &n, &m) == 2){
        if(m == 0 && n == 0) break;
        double sum = 0;
        for(int i=n;i<=m;i++){
            //double j = i; //问题行
            sum += 1 / ((double)i * (double)i);
        }
        fprintf(fout, "Case %d: %.5f\n", line, sum);
        line++;
    }
    fclose(fin);
    fclose(fout);
    return 0;
}

问题:
当问题行也就是double j = i取消注释的时候,data.out就会有输出,而当问题行被注释上的时候,data.out就不会有输出,为什么呢?
这行不是毫无意义吗?

输入数据为:

2 4
65536 655360
0 0

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

亚希 2022-09-18 17:19:57

你输入时指定的格式不对,
图片描述

%lld 改为 %d后, 运行正常

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文