用户:
程序侯查看:0 回复:1 评论:0 创建时间:2020-06-23T23:16:53
【作品展示】
无
【作品介绍】
当你输入小于46的数时,没有任何问题,但第44项的1134903170加第45项的1836311903竟然等于-132375223!接下来正数和附属交错出现……我试过吧int类型的a、b、A、B四个变量改成long类型,可结果没有半点变化!
【作品源代码】
#include <iostream>
#include <stdio.h>
void main():
{
cout << "你要计算几项斐波那契数列?";
int a, b;int A, B;
int numbers = 0;
cin >> numbers;
a = 1;
b = 1;
printf("第1项:1\n");
for(int i = 2 ; i < numbers + 1; i = i+1)
{
A = a; B = b; /*A和B是a和b的备份*/a = B; b = A + B;
printf("第%d项:%d\n", i, b);
}
}
【提示】
该作品为C/C++作品,海龟编辑器无法运行。
急_开_锁_办_证810864C语言标准没有规定long、short的具体范围。在有的编译器里,long类型和short类型和int类型数据精度一样,也就是没有区别。你可以改用C99标准的long long类型试试。
别的一些语言,比如Java,对short、int、long可表示的范围长度有明确的规定,那就不会有这个问题。
点赞0
评论