標籤:tcl
l 數值運算元
運算式的運算元通常是整數或實數。整數可能是十進位,二進位,八進位或十六進位。比如下面同一個整數
335 --> 十進位
0o517 --> 八進位
0x14f --> 十六進位
0b10100111 --> 二進位
處理0開頭的十進位整數最安全的方法是使用scan命令.
下面就是很常用的例子:
l 操作符及其優先順序別
Tcl與C類似,相同的優先順序符從左至右進行計算。比如:10-4-3與(10-4)-3結果是一樣的,但如果4*2 < 7,計算結果為0,因為*的優先順序別大於>,其實那麼多操作符,根本不可能記住,最保險,也是最可靠的就是用()來完成自己的意圖。
l 算術操作符
+, -, *, /, %, 及**
l 關係操作符
<; <=; >=; >; ==; !=
l 邏輯操作符
邏輯操作符 &&, || , 以及!
($x > 4) && ($x < 10),其中每個操作符結果都是0或1
A && B: A與B同時為真,方為真
A || B : A與B只要有一個為真,就為真
!A : A為假,則為真
Tcl中總是用1代表真,0代表假,在Tcl中:
false, no以及off表示假
true, yes以及on表示真
NOTE: 這些字串不區分大小寫.
l 按位操作符
Tcl中提供了6個操作符. &, |, ^, << , >>,以及~
& : 按位與
| : 按位或
^ : 異或
<<: 按位左移
>>: 按位右移
~ : 取反符號
l 三元操作符
expr {($a < $b) ? $a : $b}
$a < $b為條件
1) 如果條件為真: 則選擇$a
2) 如果條件為假: 則選擇$b
l 數學函數
Tcl運算式支援數學函數,如sin(),cos(),abs(),exp()等函數,到時候請查閱文檔即可.
l 替換
運算式運算元的替換有兩種方式:
方式一: 普通的Tcl解析器機制
方式二: 通過運算式處理
1. 首先當運算式遇到$,它自己會進行一次變數替換,把變數x的值傳給sin.
2. 其次將2*sin($x)作為參數傳遞給expr.
NOTE: 最好總是把運算式用{}括起來,即使是在使用expr命令的時候,原因一:Tcl處理括起來的運算式效率,大大高於沒有括起來的運算式。原因二:避免代碼中出現一些難以捕捉的安全性漏洞.比如說:
set x [expr $input - 2]
如果有使用者輸入[format c:\],Tcl解析器直接會將這個字串作為input變數,從而格式化C盤。
l字串操作
Tcl運算式接收字串,一般是下面兩種方式
方式一: 用雙引號
方式二: 用大括弧
所以像下面的表示是錯誤的:
l 列表操作
Tcl 支援兩個列表操作符,in 與lsearch –exact
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Tcl學習之--運算式