#include<stdio.h>void main(){long f1, f2;int i;f1 = f2 = 1;for( i=0; i<20; i++ ){printf( "%ld,%ld", f1, f2 );f1 = f1 + f2;f2 = f1 + f2;}getch();}
2 回答

千巷猫影
TA贡献1829条经验 获得超7个赞
在Win
32的情况下long和int是一样的,其能表示的范围是一样的,我先你的结果可能超出int和long所能够表示的范围了。建议采用__int64,改写后的程序为:
#include<stdio.h>
void
main()
{
__int64
f1,
f2;
int
i;
f1
=
f2
=
1;
for(
i=0;
i<20;
i++
){
printf(
"%I64d,%I64d",
f1,
f2
);
f1
=
f1
+
f2;
f2
=
f1
+
f2;
}
getch();
}

慕容3067478
TA贡献1773条经验 获得超3个赞
//我认为%ld输出的结果是对的,主要是下一个输出与前一个输出合并造成错误的假象。
//每输出两个数就换行,可以解决问题
#include<stdio.h>
void main()
{
long f1, f2;
int i;
f1 = f2 = 1;
for( i=0; i<20; i++ ){
printf( "%ld,%ld\n", f1, f2 );//改过!改过!改过!改过!改过!
f1 = f1 + f2;
f2 = f1 + f2;
}
getch();
}
- 2 回答
- 0 关注
- 155 浏览
添加回答
举报
0/150
提交
取消