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学习之--表达式的更多相关文章

  1. Tcl学习之--语法|变量

    [语法|变量] l 脚本.命令和单词 Tcl提供了大约100条命令.Tk提供了另外几十条,脚本包括一条或多条,通过换行符或分号分隔开. set a 12 set b 23 也能够写成一行: set a ...

  2. Java8 新特性学习 Lambda表达式 和 Stream 用法案例

    Java8 新特性学习 Lambda表达式 和 Stream 用法案例 学习参考文章: https://www.cnblogs.com/coprince/p/8692972.html 1.使用lamb ...

  3. tcl学习

    variables(变量) 语法:set varname value 例如:set a 5 注意:大小写敏感,任意长度,任意字符 使用之前无需申明 substitution(替换) 1 变量值替换 $ ...

  4. JavaScript学习笔记-表达式和语句

    表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数: 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一 ...

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

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

  6. Angular JS学习之表达式

    1.Angular JS使用表达式把数据绑定到HTML: 2.Angular JS表达式写在双大括号中:{{expression}} **Angular JS表达式把数据绑定到HTML,这与ng-bi ...

  7. 学习lamda表达式

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.L ...

  8. Clojure学习:表达式与函数

    Clojure是一门Lisp方言——确切地说,是一门JVM上的Lisp方言——也是一门非纯粹的函数式语言. Clojure理所当然地秉承了Lisp“代码即数据( code is data! )”的设计 ...

  9. TypeScript 学习二 表达式和循环

    表达式: 1,箭头表达式:将function用箭头代替,参数相应进行处理: 用来声明匿名函数,消除了传统匿名函数的this指针问题: 1) 例:简单的方法体为单行的方法,此时不需要大括号和return ...

随机推荐

  1. CodeForces 651A(水题)

    Friends are going to play console. They have two joysticks and only one charger for them. Initially ...

  2. IP与以太网的包收发操作

    你好,这是<网络是怎样连接的>的第3篇读书笔记,第二章<用电信号传输TCP/IP>后半部分:IP与以太网的包收发操作. 先看下经典的TCP/IP四层模型: 通常,下层模块支撑上 ...

  3. 深入分析setContentView

    在网络层,互联网提供所有应用程序都要使用的两种类型的服务,尽管目前理解这些服务的细节并不重要,但在所有TCP/IP概述中,都不能忽略他们: 无连接分组交付服务(Connectionless Packe ...

  4. 洛谷P1208 [USACO1.3]混合牛奶 Mixing Milk(贪心)

    题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...

  5. Linux vi命令快操作汇总

    第一部份:一般指令模式可用的按钮說明,游标移动.复制粘贴.搜寻取代等 一.移动游标的方法h 或 向左方向鍵(←) 游标向左移动一个字节j 或 向下方向鍵(↓)   游标向下移动一个字节k 或 向上方向 ...

  6. win系统如何在桌面显示我的电脑

    如果是在Windows Server 2012本地控制台下,直接按Win(键盘上的微软徽标键)+R,输入: rundll32.exe shell32.dll,Control_RunDLL desk.c ...

  7. 通过nvm 切换 npm 版本

    通过 nvm-windows 更新 npm 1.先安装 nvm-windows .成功后可在命令窗口 输入nvm 查看到 nvm的版本号. 2..在命令窗口输入 nvm list,查看当前使用的 no ...

  8. 使用序列号激活优动漫PAINT(附激活码)

    优动漫PAINT是一款功能强大的动漫绘图软件,简单的中文界面和丰富的笔刷操纵,再次为设计工作者带来非一般的感受!最近,有不少小伙伴提出这样的疑问:购买安装优动漫PAINT之后,不知道如何激活,在哪里输 ...

  9. vc++实例

  10. C# html代码生成word

    首先引入 Microsoft.Office.Interop.Word 其次要先说一下,把一大段html代码直接变成word文件,只能生成doc文件,docx文件应该是不行的 首先我们用IO生成一个do ...