【发布时间】:2016-11-04 11:15:27
【问题描述】:
据我所知,for-loop 中的范围包括下限和上限。这在以下代码中引入了一个问题:
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 范围。这是正确的吗?有没有其他方法可以给出范围?
【问题讨论】:
标签: rust