c - 这个c程序中的 "long long "有什么问题?

标签 c

#include<stdio.h>
#include<conio.h>
void main()
{
    long long sum=2,x=1,y=2,z=0,i;
    for(i=2;i<200000;i++)
    {
        z=x+y;
        y=y+z;
        x=z;
        if(z%2==0)
            sum+=z;
if(y%2==0)
sum+=y;
    }
    printf("%lld",sum);
    getch();
}

添加偶数斐波那契数。对于 i<200000,它可以正常工作,但是当我将限制再增加一位数时,它显示否定答案。我已经尝试过“unsigned long long”和“long long int”,但我没有得到正确的答案..请帮助我......

最佳答案

您应该打印总和:

printf("%lld\n", sum);

printf("%lld");将打印垃圾值

如果这不是问题,那么您实际上无法对 i<2000000 求和斐波那契数。

因为:

对于i<20000你的程序会给你一个总和,它实际上是一个8359数字。现在怎么样i<2000000 ?这将需要大量的时间和内存。我认为你实际上并没有这样做。这是不可行的。

最后,您的程序根本不生成斐波那契数

关于c - 这个c程序中的 "long long "有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733804/

相关文章:

c - 为什么我们需要解决 `make` 和 `make install` 之后的依赖关系?

c - 检测到 glibc - 双重释放或损坏

C编程: Delete specific value stored in Array

c - 当我使用 valgrind 运行这段代码时,它的执行方式与我在没有 valgrind 的情况下运行它时的执行方式不同

c - 在 PIC18 上从用户处获取数组值?

java - 如何在没有 "0x00007fffe0dde513 in ?? ()"的情况下生成有效的 JDK9 调试版本?

c++ - C/C++ 控制CPU使用率

c - 对于为什么这些程序在 Windows 和 Linux 上运行不同的原因有什么直觉或见解吗?

c - 头文件中的完整宏

c - 为什么数组指针的地址与该指针中存储的数据相同?