求助,一个简单的C语言for循环问题
用数组求小于某个数的前n项斐波那契数列,本来是个很简单的问题,我的代码如下# include <stdio.h>
#define MAX 128
int main()
{
int a={0};
a=1;
a=2;
int i;
for(i=2;a<4000;i++)
{
a=a+a;
printf("a[%d]=%d\n",i,a);
}
return 0;
}
然而编译结果是这样。。。for一直循环下去直到值溢出,有大佬知道这是为什么吗{:10_312:} # include <stdio.h>
#define MAX 128
int main()
{
//数组只定义了128个元素,循环到了3999,肯定溢出啊。
//而且斐波那契数列到第45项 int 类型就装不下了。
int a={0};
a=1;
a=2;
int i;
for(i=2;a<4000;i++)
{
a=a+a;
printf("a[%d]=%d\n",i,a);
}
return 0;
} xieglt 发表于 2021-1-28 20:48
大佬,是不是我对for循环理解有误啊,它不是应该在数组a的第i项大于4000的时候跳出循环吗,为什么没有跳出 shawshanke 发表于 2021-1-28 21:03
大佬,是不是我对for循环理解有误啊,它不是应该在数组a的第i项大于4000的时候跳出循环吗,为什么没有 ...
你的for判断条件不对,a【i】还没有赋值你就去判断了
应该用a去判断 xieglt 发表于 2021-1-28 20:48
好吧我好像明白了,每结束一次循环后i增1,此时a(i)为零,条件永远为真,我傻了,感谢解答 李京 发表于 2021-1-28 21:07
你的for判断条件不对,a【i】还没有赋值你就去判断了
应该用a去判断
谢谢! shawshanke 发表于 2021-1-28 21:09
谢谢!
互相帮助,不客气! shawshanke 发表于 2021-1-28 21:09
谢谢!
不好意思,我看错了,4楼的解答是正确的。
页:
[1]