gpt4 book ai didi

arrays - 用于数组索引的正确类型是什么?

转载 作者:行者123 更新时间:2023-11-29 07:46:27 25 4
gpt4 key购买 nike

此代码有效,但我想显式声明索引范围 max 的类型。但是 uXiX,其中 X = 8、16 或 32 会产生编译错误。什么是正确的类型?

fn main() {
let mut arr2: [[f64; 3]; 3] = [[0.0; 3]; 3];
let pi: f64 = 3.1415926535;

let max = 3; // let max: i16 e.g. is wrong

for ii in 0..max {
for jj in 0..3 {
let i = ii as f64;
let j = jj as f64;
arr2[ii][jj] = ((i + j) * pi * 41.0).sqrt().sin();
println!("arr2[{}][{}] is {}", ii, jj, arr2[ii][jj]);
}
}
}

最佳答案

编译器给你一个注释:

   = note: slice indices are of type `usize`

您必须使用 usize 索引切片. usize是无符号整数类型,与指针大小相同,可以表示内存偏移量或对象在内存中的大小。在 32 位系统上,它是一个 32 位整数,在 64 位系统上,它是一个 64 位整数。将您的索引变量声明为 usize除非你真的有很多,在这种情况下你可以使用 x as usize将它们转换为 usize .

当您省略类型注释时,Rust 推断您的整型字面量必须是 usize 类型因为slices实现 Index<usize>而不是 Index<i32>Index<any other integral type> .

关于arrays - 用于数组索引的正确类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40230697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com