如何通过负偏移量对数组索引进行寻址



假设我有这样的东西:

let SIZE = 100;
let a = [0; SIZE];
let b = -1;

然后我该怎么做:

a[(SIZE/2)+b];

这里数组的usize索引和减去的负数的i32之间不匹配。有没有一种方便的方法可以通过同样具有负偏移的数组进行索引?

就像@Aplet123回答的那样,您可以使用强制转换。但是,如果b总是负值,则可以保存绝对值,并将其替换为:

let b = 1;
return a[SIZE/2 - b];

首先将其强制转换为isize(与usize大小相同的有符号整数(:

a[((SIZE / 2) as isize + b) as usize]

最新更新