为什么使用int(非负整数)为数组的索引后显示错误?



请帮助处理此代码:

My cdoe:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract new_nth{
function nth(int n,int a,int b,int c) pure public returns(int){
int[100] memory arr;
arr[0] = a;
arr[1] =b;
arr[2] = c;
uint i;
for(i =3;i<n;++i){
arr[i] = arr[i-1]+arr[i - 2 ]+arr[i - 3];
}
return arr[n-1];
}
}

错误:

TypeError: Operator

TypeError:类型int256不能隐式转换为预期的类型uint256。——比;nth_term.sol:十七20:|17 | return arr[n-1];| ^^^

如果你只是转换uint n,它将工作

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract new_nth{
function nth(uint n,int a,int b,int c) pure public returns(int){
int[100] memory arr;
arr[0] = a;
arr[1] =b;
arr[2] = c;
uint i;
for(i =3;i<n;++i){
arr[i] = arr[i-1]+arr[i - 2 ]+arr[i - 3];
}
return arr[n-1];
}
}

因为数组索引是uint类型。因为你指定了int n编译器认为你的数组可能有负索引

最新更新