Tcl学习之--表达式
l?數(shù)值操作數(shù)
表達(dá)式的操作數(shù)一般是整數(shù)或?qū)崝?shù)。整數(shù)可能是十進(jìn)制。二進(jìn)制,八進(jìn)制或十六進(jìn)制。
比方以下同一個(gè)整數(shù)
335 ? ? ? ? ? ? ? --> 十進(jìn)制
0o517 ? ? ? ? ? --> 八進(jìn)制
0x14f ? ? ? ? ? ?--> 十六進(jìn)制
0b10100111 --> 二進(jìn)制
處理0開頭的十進(jìn)制整數(shù)最安全的方法是使用scan命令.
以下就是非經(jīng)常常使用的樣例:
l?操作符及其優(yōu)先級別
Tcl與C類似。同樣的優(yōu)先級符從左到右進(jìn)行計(jì)算。比方:10-4-3與(10-4)-3結(jié)果是一樣的,但假設(shè)4*2 < 7,計(jì)算結(jié)果為0,由于*的優(yōu)先級別大于>,事實(shí)上那么多操作符,根本不可能記住,最保險(xiǎn)。也是最可靠的就是用()來完畢自己的意圖。
l?算術(shù)操作符
+, -, *, /, %, 及**
l 關(guān)系操作符
<; <=; >=; >; ==; !=l?邏輯操作符
邏輯操作符 &&, || , 以及!
($x > 4) && ($x < 10)。當(dāng)中每一個(gè)操作符結(jié)果都是0或1
A && B:?? A與B同一時(shí)候?yàn)檎?#xff0c;方為真
A || B ? ?:?? A與B僅僅要有一個(gè)為真。就為真
!A ? ? ? ? :?? A為假,則為真
Tcl中總是用1代表真,0代表假,在Tcl中:
false, no以及off表示假
true, yes以及on表示真
NOTE: 這些字符串不區(qū)分大寫和小寫.
l?按位操作符
Tcl中提供了6個(gè)操作符. &, |, ^, << , >>,以及~
& : 按位與
| : 按位或
^ : 異或
<<: 按位左移
>>: 按位右移
~ : 取反符號
?
l?三元操作符
expr {($a < $b) ? $a : $b}
$a < $b為條件
? 1)? 假設(shè)條件為真: 則選擇$a
? 2)? 假設(shè)條件為假: 則選擇$b
l?數(shù)學(xué)函數(shù)
Tcl表達(dá)式支持?jǐn)?shù)學(xué)函數(shù),如sin(),cos(),abs(),exp()等函數(shù)。到時(shí)候請查閱文檔就可以.
l?替換
表達(dá)式操作數(shù)的替換有兩種方式:
方式一: 普通的Tcl解析器機(jī)制
方式二: 通過表達(dá)式處理
1. 首先當(dāng)表達(dá)式遇到$,它自己會(huì)進(jìn)行一次變量替換,把變量x的值傳給sin.
2. 其次將2*sin($x)作為參數(shù)傳遞給expr.
NOTE: 最好總是把表達(dá)式用{}括起來,即使是在使用expr命令的時(shí)候,原因一:Tcl處理括起來的表達(dá)式效率,大大高于沒有括起來的表達(dá)式。
原因二:避免代碼中出現(xiàn)一些難以捕捉的安全漏洞.比方說:
set x [expr $input - 2]
假設(shè)實(shí)用戶輸入[format c:\],Tcl解析器直接會(huì)將這個(gè)字符串作為input變量,從而格式化C盤。
l 字符串操作
Tcl表達(dá)式接收字符串。通常是以下兩種方式
方式一: 用雙引號
方式二: 用大括號
所以像以下的表示是錯(cuò)誤的:
l?列表操作
Tcl 支持兩個(gè)列表操作符,in 與 lsearch –exact
總結(jié)
以上是生活随笔為你收集整理的Tcl学习之--表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NOIP】提高组2013 积木大赛
- 下一篇: Awesomplete 屌爆了