Rust中for循环的预期行为疑问:为何终止于9而非10?
关于Rust for循环终止于x=9的疑问解答
嘿,这完全是Rust里的预期行为哦!
你遇到的问题核心在于Rust中范围表达式的规则:
- 当你使用
a..b这种写法时,它表示的是左闭右开区间——也就是包含起始值a,但不包含结束值b。所以如果你的循环是类似for x in 1..10这样的写法,x会依次取1、2、…、9,自然不会执行到x=10的情况。 - 如果想要让循环包含10这个值,你需要使用闭区间范围的写法:
a..=b,它会同时包含起始值和结束值。比如把循环改成for x in 1..=10,这样x就会从1一直运行到10,满足你的预期。
举个实际的代码例子对比一下:
// 左闭右开区间:输出1到9 for x in 1..10 { println!("{}", x); } // 闭区间:输出1到10(包含10) for x in 1..=10 { println!("{}", x); }
这种设计其实挺常见的,很多编程语言的范围逻辑都采用左闭右开,这样计算区间内的元素个数会很直观——比如1..10的元素个数就是10-1=9个,和实际输出的数量一致。
内容的提问来源于stack exchange,提问作者user51
相关产品推荐
相关产品推荐

