2013-02-23 36 views
1

我想從1到10的計數,但跳過5.這隻適用於當我把incr放在下面的開始時。爲什麼?我認爲incr後其他會增加一個2 3 4等,然後跳過5,並進入10.但它停在5,永遠不會繼續。Tcl雖然incr邏輯

這個作品

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 
} 

回答

4

想想繼續命令的邏輯:它跳過循環的其餘部分,並從頭開始。當== 5時,if語句爲真,因此您跳過循環的其餘部分,這也會跳過incr命令。轉到循環的頂部,a仍然是5,並且您再次跳過循環的其餘部分。實際上,你正在陷入無限循環。要解決這個問題的一種方法是不使用繼續命令:

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

順便提一下,第一種方式也不太工作:它跳過1號和2與

+1

啊開始我現在明白了。 這就是爲什麼for命令每次都能很好地完成它的原因,因爲它繼續退出循環並從頭再次開始執行。 如果你在開始時沒有放置incr,那麼a永遠不會增加到下一個數字。 感謝您提供不等於5的解決方案, – 2013-02-23 01:06:39