TCL/Tk基础学习(二)

表达式

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}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值