请帮助处理此代码:
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
编译器认为你的数组可能有负索引