<分区>
据我所知,for
循环中的范围是包含下限和排除上限。这在以下代码中引入了一个问题:
fn main() {
let a: u8 = 4;
for num in 0..256 {
if num == a {
println!("match found");
break;
}
}
}
我想从 0 到 255 循环 256 次,这符合 u8
支持的数据范围。但是由于范围是不包括上限的,我必须给 256 作为进程 255 的限制。因此,编译器给出以下警告。
warning: literal out of range for u8
--> src/main.rs:4:19
|
4 | for num in 0..256 {
| ^^^
|
= note: #[warn(overflowing_literals)] on by default
当我执行它时,程序会跳过 for
循环。
在我看来,编译器必须忽略该范围内的 256 并将该范围接受为 u8
范围。这是对的吗?还有其他方法可以给出范围吗?