我想将以下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