Tcl而incr逻辑

时间:2013-02-23 00:13:35

标签: tcl

我想数从1到10但是跳过5.这只适用于我在下面的开头放置incr的时候。为什么?我认为incr在其他之后将增加到2 3 4等然后跳过5然后进入10.但它在5停止并且永远不会继续。

这是有效的

set a 1
set b 10

while {$a < $b} {
    incr a
    if {$a == 5} {
        continue
    } else {
        puts $a
    } 
}

这不起作用

while {$a < $b} {
    if {$a == 5} {
        continue
    } else {
        puts $a
    } 
    incr a
}

1 个答案:

答案 0 :(得分:4)

考虑一下continue命令的逻辑:它跳过循环的其余部分,并从头开始。当a == 5时,if语句为true,因此您跳过循环的其余部分,这也跳过incr命令。转到循环的顶部,a仍为5,然后再次跳过循环的其余部分。实际上,您正在遇到无限循环。修复它的一种方法是不使用continue命令:

set a 1
set b 10
while {$a <= $b} {
    if {$a != 5} {
        puts $a
    }
    incr a
}

顺便说一下,第一种方式并不是很有效:它跳过1号并从2开始。