为了账号安全,请及时绑定邮箱和手机立即绑定

像以下这个%ld怎么输出的结果错的?

像以下这个%ld怎么输出的结果错的?

繁花如伊 2022-04-21 16:11:53
#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();
}



查看完整回答
反对 回复 2022-04-24
?
慕容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();
}



查看完整回答
反对 回复 2022-04-24
  • 2 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号