2014-05-15 68 views

回答

1

該代碼對我「有用」。

% for { set i 0.05 } { $i < 0.5 } { set i [expr { $i+0.05 } ] } { 
    puts "I inside first loop: $i" 
} 
I inside first loop: 0.05 
I inside first loop: 0.1 
I inside first loop: 0.15000000000000002 
I inside first loop: 0.2 
I inside first loop: 0.25 
I inside first loop: 0.3 
I inside first loop: 0.35 
I inside first loop: 0.39999999999999997 
I inside first loop: 0.44999999999999996 
I inside first loop: 0.49999999999999994 

我猜,你有一個問題真正的代碼是不完全相同的,而且它的缺少}地方。尋找這種東西的最好方法是使用一個程序員的編輯器來進行括號匹配(他們幾乎都是這樣做的;我知道vim,emacs和Eclipse會這樣做),並查看你的代碼在哪裏有一個括號(或圓括號或大括號)與你期望的不符。然後,您可以向內潛入,找到與您想要的不匹配的最內層支架;它可能是它缺少的一對。

僅供參考,TCL是嚴密的關於{ ... }匹配,相當嚴格的約[ ... ]匹配,通常很容易關於( ... )匹配(雖然表達和數組變量的處理可能不同意)。


你的循環將被更好地寫成:

for {set ii 1} {[set i [expr {$ii * 0.05}]] < 0.5} {incr ii} { 
    puts "I inside first loop: $i" 
} 

甚至:

for {set ii 1} {$ii < 10} {incr ii} { 
    set i [expr {$ii/20.0}] 
    puts "I inside first loop: $i" 
} 

的原因有計算機執行浮點運算的方式做,而不是特殊到Tcl;你有相同的問題在C和C + +和Java和C#和...

+0

像Donal說,你的部分代碼沒有問題。 可能會嘗試使用nagelfar工具檢查您的整個腳本。 http://nagelfar.berlios.de/ –