int main()
{
long int i,t,n,q[500],d[500],s[500],res[500]={0},j,h;
scanf("%ld",&t);
while(t--)
{
scanf("%ld %ld",&n,&h);
for(i=0;i<n;i++)
scanf("%ld %ld",&d[i],&s[i]);
for(i=0;i<h;i++)
scanf("%ld",&q[i]);
for(i=0;i<h;i++)
{
for(j=0;j<n;j++)
{
res[j]=d[j]+q[i]*s[j];
}
j=cal(res,n,q[i],s);
printf("%ld\n",j);
}
}
return 0;
}
long int cal(int res[],int n,int q,int s[])
{
long int i,max=0,p,pos=0;
for(i=0;i<n;i++)
{
if (max==res[i])
{
pos=add(res,s,pos,i,q);
max=res[pos];
}
if (res[i]>max)
{
max=res[i];
pos=i;
}
}
return pos;
}
每当我使用变量 as 时int
,它都可以正常工作,但是如果我将变量声明为 as long int
,我会在函数调用中收到警告消息“可疑指针转换”——在以下行中:
(j=cal(res,n,q[i],s));
你能解释一下原因吗?