表达式
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
#字符串操作文章来源地址https://www.toymoban.com/news/detail-513246.html
#字符串操作 ne eq
puts [ expr {$a eq $b}]
puts [ expr {$a ne $b}]
文章来源:https://www.toymoban.com/news/detail-513246.html
到了这里,关于TCL/Tk基础学习(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!