Tcl表达式由操作符、操作数、圆括号等构成。于C语言、verilog用法几乎相同。
# 算术操作符、逻辑运算符、关系运算符、按位操作符(一元)、选择运算符(三元)
算术操作符与C语言等用法相同
set r 2
set pi 3.14
#expr 直接获取表达式的值
puts [ expr $pi * $pi * $r ** 2 ]
#tcl解释器会在执行expr前进行变量置换,传递给expr的参数为3.14*2
puts [ expr {$pi * $pi * $r ** 2} ]
#{}阻止变量传递,传给expr参数为pi*r,当表达式处理器遇到$符号时进行变量置换
#tcl处理{}内表达式的效率远高于其他表达式
#-->针对表达式 puts 只是将结果输出
#a/b 结果需要满足 a=q*b+r, 0<=|r|<|b|,r q同号,q是商,r余数
#当除数、被除数含有一个一号时,商为负
#相当于向下取整 -0.5 取 -1
puts [ expr {-1 / 2} ]
puts [ expr {1 / -2} ]
#a%b 瞒足 a=q*b+r, 0<=|r|<|b|, r q同号
#当除数为负时,余数为负
#当被除数为负时,余数为正-3
puts [ expr {-7 % 3} ]
puts [ expr {7 % -3} ]
#-9 -9
for {set i 1} {$i< 16 } {incr i 4} {puts "2^$i : \t [expr {2 ** $i }]"
}
39.4384
39.4384
-1
-1
2
-2
2^1 : 2
2^5 : 32
2^9 : 512
2^13 : 8192
关系、逻辑、按位、选择操作符set a verilog
set b tcl
puts [ expr {$a< $b } ]
puts [ expr {23< 25 } ]
#八进制
puts [ expr {8 == 010 } ]
puts [ expr {8 == 0o10 } ]
#十六进制
puts [ expr {8 == 0x8 } ]
# yes/on/ture 表示真
# no/off/false 表示假
puts [expr {on && no }]
puts [ expr {($a<= $b) ? [ puts "max: $a"] : [ puts "max: $b"] } ]
0
1
1
1
1
0
max: tcl
函数# tcl函数几乎包含全部函数
# 向上取整
set x 5.6
puts [expr {ceil($x)} ]
#向下取整
puts [expr {floor($x)}]
#四舍五入
puts [expr {round($x)}]
#[0,1]伪随机数浮点数
puts [expr {rand()} ]
#srand(x) 整数种子随机数生成
# 表达式布尔值转换
bool(x)
# 整形值的实数
double(x)
# 转为整形值
int(x)
# 用至少64位宽表示整形值
wide(x)
6.0
5.0
6
0.526772657654608
#字符串操作
#字符串操作 ne eq
puts [ expr {$a eq $b}]
puts [ expr {$a ne $b}]
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧