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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-27 04:31:22

Tcl学习之--表达式的相关文章

Lua学习(2)——表达式

1. lua算术操作符lua支持的算数操作符: + - * /除 ^指数 %取模 -符号 2. lua关系操作符 <小于 >大于 <= >= == ~=不等于 3. 逻辑操作符 and,or,not 所有逻辑操作符将false,nil 视为假,其他视为真. >print(4 and 5) 5 max = (x>y) and x or y 类似于C语言中选择表达式 max = x>y?x:y 4. 字符串连接 ..表达式 > print("Hello

Tcl学习之--语法|变量

[语法|变量] l 脚本.命令和单词 Tcl提供了大约100条命令,Tk提供了另外几十条,脚本包含一条或多条,通过换行符或分号分隔开. set a 12 set b 23 也可以写成一行: set a 12; set b 23 每个命令由多个单词组成,以空格来分隔,首字母为命令名,所以: 1. set -> 单词,同时也是命令名 2. a    -> 单词 3. 12  -> 单词,将该值赋予a l 处理命令 Tcl处理命令分两步: 解析和执行 1)  在解析阶段,Tcl进行一系列简单字

算法学习 - 后缀表达式 (C++ 栈实现)

后缀表达式就是把一个式子进行树的后序遍历.然后根据这个顺序来求值. 栈来实现的时候很简单. 例如中缀表达式:6 * [ 5 + ( 2 + 3 )  * 8 + 3 ] 则 后缀表达式为:6 5 2 3 + 8 * + 3 + * 下面上代码: // // main.cpp // postfixExpression // // Created by Alps on 14-7-28. // Copyright (c) 2014年 chen. All rights reserved. // #inc

scala入门学习之表达式

如果你按照上一篇将每一个代码都亲自敲了一遍的时候,我想你已经对scala有一定的感觉,你会发现它很好用,也很人性化,同时也很灵活,一个语言如果特别的灵活就会很难学习,所以坚持,继续学习. 这一篇我们学习表达式的内容,在上一篇我们其实已经用了一个foreach,下面直接上代码: //条件表达式    println("表达式:if")    val x=1    val a=if(x>0) 1 else 0    println(a)        println("表达

Tcl学习之--流程控制|过程

l  switch命令: -->模式匹配 模式匹配,类似于if, elseif, else 第一个参数: 要检测的值 第二个参数: 一个或多个元素对的列表 看下下面三种表示方式: switch支持三种模式匹配的方式: -exact: 严格的字符串比较,默认 -glob: 全局匹配,参见stringmatch -regexp: 正则表达式匹配 --:标记选项结束 NOTE: 通常情况下,应该总是使用-选项来标记选项的结束,确保switch命令都能正确识别检测字符串 l  source命令: : -

JavaWeb学习笔记——表达式语言

使用表达式语言,可以方便地访问标志位(JSP中有page(pageContext).request.session和application4种标志位)中的属性内容,可以避免出现许多的Scriptlet代码.

Tcl学习之--列表|字典

[列表|字典] Tcl使用列表来处理各种集合,比如一个文件夹中的所有文件,以及一个组件的所有选项.最简单的列表就是包含由任意个空格.制表符.换行符.分隔的任意多个元素的字符串.比如: JerryAlice Mandy David l  lindex命令: --> 获取元素 至少需要两个参数,一个列表和一个索引值,返回取得的元素 如果列表中包含列表的话,访问子列表中的元素就要多个参数 l  llength命令: --> 获取长度 列表命令中可以把一个含有空白符的元素括在括号中,还可以使用反斜线来

Tcl学习之--字符串

[字符串操作] Tcl的精髓在于对字符串的处理,很多函数非常有用,特别是正则表达式.下面列出其常用的函数. l sting index:  --> 索引 l sting range:  --> 范围 l sting length: --> 长度 l sting toupper 和string tolower: --> 大小写 l sting trim. trimleft, trimright:   --> 剪裁 三种剪裁方式,每种方式都需要两个参数:指定字符串,指定裁剪方式.

python学习--数字表达式、变量--基于python3.5.3

1.数字和表达式 1.1.1 取余(模除运算)--x%y的结果为x除以y的余数,例如 注:python2.x版本整除是/,python3.x版本整除是// 1.1.2 幂(乘方)运算,例如 注:幂运算符取反(一元减运算符)的优先级要高,所以-3**2等同于-(3**2).如果想计算(-3)**2,就要显示说明. 1.2.1 十六进制和八进制 十六进制 八进制 注:python2.x版八进制为010,python3.x版的八进制为0o10 十六进制和八进制的首位数字都是0 2.变量 变量是代表(或