2013-10-07 2 views
-1

У меня есть следующий код в TCL:Как увеличить переменную в цикле в TCL?

set counter 1 

for {set i 0} {$i < 3} {incr i 1} { 
    set temp $counter 
    incr temp 1 
    incr counter 2 
} 

для каждого цикла, counter увеличивается на 2, а temp увеличивается на 1 на основе значения counter, но значение counter и temp является:

counter 1 temp 2 in the first loop 
counter 3 temp 3 in the second loop 
counter 5 temp 4 in the third loop 

ожидаемое значение:

counter 1 temp 2 in the first loop 
counter 3 temp 4 in the second loop 
counter 5 temp 6 in the third loop 

В чем проблема и как его исправить?

+1

Невозможно воспроизвести то, что вы говорите, оно дает. Не могли бы вы включить 'puts' в свой код? Вы могли бы их упустить? – Jerry

+0

Где вы проверяете значения $ counter и $ temp? – HirofumiTamori

+0

Вы на 100% уверены, что вы устанавливаете темп внутри цикла, похоже, вы устанавливаете его вне цикла. – KillianDS

ответ

0

Все зависит от того, где вы используете значение:

set counter 1 
for {set i 0} {$i < 3} {incr i 1} { 
    set temp $counter 
    puts "A: counter = $counter, temp = $temp" 
    incr temp 1 
    puts "B: counter = $counter, temp = $temp" 
    incr counter 2 
    puts "C: counter = $counter, temp = $temp" 
} 

Когда я бегу, что я получаю:

 
A: counter = 1, temp = 1 
B: counter = 1, temp = 2 
C: counter = 3, temp = 2 
A: counter = 3, temp = 3 
B: counter = 3, temp = 4 
C: counter = 5, temp = 4 
A: counter = 5, temp = 5 
B: counter = 5, temp = 6 
C: counter = 7, temp = 6 

Она смотрит на меня, как вы хотите, чтобы значения от позиции, где puts "B:…" расположен.

Смежные вопросы