long long与__int 64区别?
在线等~
为什么
#include <stdio.h>
int main(){
__int64 a[91];
int i, n;
a[1] = 1; a[2] = 2;
for (i=3; i<=90; i++){
a[i] = a[i-2]+a[i-1];
}
while (scanf("%d", &n)==1 && n!=0){
printf("%I64d\n", a[n]);
}
return 0;
}
我提交是对的,而下面的就Output Limit Exceed 呢?
#include<stdio.h>
int main()
{
long long int f1,f2,f3,n,i,a[91];
a[1]=1;
a[2]=2;
for(i=3;i<91;i++)
{ a[i]=a[i-1]+a[i-2];
}
while(scanf("%lld",&n)!=EOF,n!=0)
{
printf("%lld\n",a[n]);
}
return 0;
}
亲,看一下问题补充吧,回答好的话,追加20分,立刻采纳,谢谢啦~~
追答while(scanf("%lld",&n)!=EOF,n!=0)
{
printf("%lld\n",a[n]);
}
这里为什么用逗号表达式?
你的逗号表达式导致n溢出了。
恩恩,那看一下问题补充吧!两者好像一样的,为什么一个accepted而另一个就Output Limit Exceed 呢?
追答把网址给我吧,我去试试long long能不能a。
好吧,您所说的潜在问题是什么呢?
我定义的是long long int也属于int类型,您所说的a[n] 这样的下标索引,是只支持int的条件,不是已经符合这个条件了吗?
long long int 其实就是long long,和int在Windows平台下并不是一回事。典型的,int是32位,而long long 是64位的。
而a[n]这样的下标,n只支持机器最高效的类型。也就是说在32位环境下是int,而64位环境下才是long long。