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学习之--表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NOIP】提高组2013 积木大赛
- 下一篇: Awesomplete 屌爆了