For循环增量在TCL中为非整数

For循环增量在TCL中为非整数,tcl,Tcl,我想在TCL中实现以下C代码: Float power_pitch = 8 float offset = 7.5 float threshold = 100 for(i=power_pitch+offset ; i<= threshold ; i += power_pitch) set power_pitch 8 set offset 7.5 set threshold 100 for { set i [expr $power_pitch + $offset] } { $i <=

我想在TCL中实现以下C代码:

Float power_pitch = 8
float offset = 7.5
float threshold = 100 
for(i=power_pitch+offset ; i<= threshold ; i += power_pitch)
set power_pitch 8
set offset 7.5
set threshold 100
for { set i [expr $power_pitch + $offset] } { $i <= $threshold } { incr i $power_pitch}
Float power\u节距=8
浮动偏移=7.5
浮动阈值=100

对于(i=power\u pitch+offset;i而言,
incr
命令仅适用于整数。否则,请使用:

set i [expr {$i + $power_pitch}]

for
命令本身不会介意。(注意浮点舍入问题;它们不是Tcl特定的,但可以命中任何不是2的幂的整数倍的东西…。

incr
命令仅适用于整数。否则,请使用:

set i [expr {$i + $power_pitch}]

for
命令本身不会介意。(注意浮点舍入问题;它们不是Tcl特有的,但可以命中任何不是2次幂整数倍的东西…)

Donal已经给出了问题的答案,我只想对
for
命令的两点进行观察

  • for
    几乎是自由形式的
  • 虽然整数计数循环是
  • 的典型用法,但它绝不是唯一的选择
    for
    命令具有概要

    对于开始测试下一个车身

    其中start、next和body是命令字符串(即适合作为
    eval
    的参数;它们可以是空的、包含单个命令或是完整脚本),test是布尔表达式字符串(即适合作为
    expr
    的参数并计算为布尔值或可以强制为布尔值的值)

    通常,start用于设置test和body,next应该使状态逐渐接近让test返回一个假值,但这只是一个约定,不是一个要求。以下调用是完全有效的(但相当难闻):

    for {set n 0 ; puts -nonewline X} {[incr n] < 5} {puts -nonewline X} {
        puts -nonewline [string repeat - $n]
    }
    
    for {set f [open foo.txt] ; set n 0} {$n >= 0} {puts $line} {
        set n [chan gets $f line]
    }
    
    释放你的思想,其他的就会随之而来


    文档:,,,

    Donal已经提供了这个问题的答案,我只想对
    for
    命令的两个方面进行观察

  • for
    几乎是自由形式的
  • 虽然整数计数循环是的典型用法,但它绝不是唯一的选择
  • for
    命令具有概要

    对于开始测试下一个车身

    其中start、next和body是命令字符串(即适合作为
    eval
    的参数;它们可以是空的、包含单个命令或是完整脚本),test是布尔表达式字符串(即适合作为
    expr
    的参数并计算为布尔值或可以强制为布尔值的值)

    通常,start用于设置test和body,next应该使状态逐渐接近让test返回一个假值,但这只是一个约定,不是一个要求。以下调用是完全有效的(但相当难闻):

    for {set n 0 ; puts -nonewline X} {[incr n] < 5} {puts -nonewline X} {
        puts -nonewline [string repeat - $n]
    }
    
    for {set f [open foo.txt] ; set n 0} {$n >= 0} {puts $line} {
        set n [chan gets $f line]
    }
    
    释放你的思想,其他的就会随之而来

    文件: