我想將以下c代碼轉換爲TCL。在TCL中使用兩個變量的循環
int a[10],b[10];
int n=20
for (i=1,j=1; i<=n; i+=2,j++)
{
b[j]=a[i];
}
我需要改變這個for循環TCL,我不想使用TCL在foreach功能... TCL是否爲循環結構允許兩個循環變量???
我想將以下c代碼轉換爲TCL。在TCL中使用兩個變量的循環
int a[10],b[10];
int n=20
for (i=1,j=1; i<=n; i+=2,j++)
{
b[j]=a[i];
}
我需要改變這個for循環TCL,我不想使用TCL在foreach功能... TCL是否爲循環結構允許兩個循環變量???
你見過discussion here:
set n 6
for {
set i 1
set j 1
} {
$i < $n
} {
incr i
incr j
} {
puts "$i $j"
}
+1。您可以使用分號而不是換行符來實現更緊湊的外觀:'for {set i 1; set j 1} {$ i <$ n} {incr i; incr j} {...}' – 2012-03-15 02:05:14
這不會達到你要找什麼,但考慮到你在C來,你需要有目標陣列開始。 ..它有可能實現你的實際目標。
foreach
循環可以將一個名稱列表作爲存儲變量。每個名稱都會從輸入列表中獲取一個值。因此,你可以用它來多個值從輸入列表每次迭代:
set result {}
foreach {x1 x2} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20} {
lappend result $x1
}
puts $result
# 1 3 5 7 9 11 13 15 17 19
完全無關的問題,但也不錯,就是它可以採取多種變量名和列表,太:
set result {}
foreach {a1 a2} {1 2 3 4 5 6} b {A B C} {
lappend result $a1 $b $a2 -
}
puts $result
# 1 A 2 - 3 B 4 - 5 C 6
這不是真正的代碼,是嗎?從數組末尾讀取是一個糟糕的主意。 – 2012-03-14 21:04:55
這不是真正的代碼,它類似於將[]中的第一個元素分配給b [],忽略[]中的第二個元素並將[]的第三個元素再次分配給b [],省略將[]的相鄰元素分配給b []。 – user1270123 2012-03-14 21:10:22
它類似於將[]的奇數位置分配給b []。 – user1270123 2012-03-14 21:11:15