原创 TCL学习小记(三)——变量&表达式

2011-8-9 14:10 3992 13 13 分类: FPGA/CPLD

         在前两节学习中多次遇到变量和表达式的概念,这节分别对这两个概念做详细分析:

         变量:在TCL中变量可分为简单变量和关联数组。

         (1) 简单变量:简单变量由变量名字和变量值组成,它们都可以用字符串表示,如“ask%dk :09213ds”可以表示一个变量的名字或者值,但是一般不建议这么表示,最好是按照C语言中变量名命名规则来命名。

         在前两节经常用到set命令,它可以创建未定义的变量,并赋值;也可以改变已定义的变量的值。此处创建变量没有明确定义变量的数据类型,其实在TCL中自动对变量进行数据存储,如图1所示,命令set  a  12.6,它是将12.6以字符串的形式赋值给变量a,存储按字符串类型存储;命令set  a  [expr  $a + 1.2],其中需要取出a中的值进行表达式计算,因此需要将a中的值由字符串类型转换到浮点数类型,这个操作是TCL自动完成的,然后计算结果以浮点数类型赋值给变量a,这时a变量的值是按浮点数类型存储。TCL的这种内部表达形式可以高效率地处理变量的值,TCL解释器会自动为变量管理内存,因此无需进行变量声明。

1

         (2) 关联数组:有数组名和数组中元素名组成,与C语言中的数组类似,但不同的是TCL中数组元素名不一定是阿拉伯数组,可以由字符串表示,如a(b)TCL中的关联数组,数组名是a,数组元素名是b。这边介绍几个对数组操作的命令,如图2所示,set命令可以对一个数组赋值,与简单变量相似;array size命令是返回数组的元素个数;array name命令是返回数组的所有元素名。

2

         表达式:表达式的作用就是将操作数与操作符联合起来,产生新的值。

         表达式中的操作数一般都是整数或者实数,整数可以是十进制的(普通格式)、二进制的(0b开头)、八进制的(0o开头)或者十六进制的(0x开头)。如图3所示,整数16的不同进制的表达方式。

3

         表达式中的操作符如表1所示,其中包含算术操作符、关系操作符、逻辑操作符、按位操作符和选择操作符。

1

语法

结果

操作数类型

-a

a的负值

整数、实数

+a

a做一元加操作

整数、实数

!a

逻辑非

整数、实数

~a

a按位取反

整数

a**b

ab次方

整数、实数

a*b

整数、实数

a/b

整数、实数

a%b

取余

整数

a+b

整数、实数

a-b

整数、实数

a<<b

a左移b

整数

a>>b

a算术右移b

整数

a<b

如果a小于b,返回1,否则为0

整数、实数、字符串

a>b

如果a大于b,返回1,否则为0

整数、实数、字符串

a<=b

如果a小于等于b,返回1,否则为0

整数、实数、字符串

a>=b

如果a大于等于b,返回1,否则为0

整数、实数、字符串

a==b

如果a等于b,返回1,否则为0

整数、实数、字符串

a!=b

如果a不等于b,返回1,否则为0

整数、实数、字符串

a eq b

如果a等于b,返回1,否则为0

字符串

a ne b

如果a不等于b,返回1,否则为0

字符串

a&b

按位与

整数

a^b

按位异或

整数

a|b

按位或

整数

a&&b

逻辑与

整数、实数

a||b

逻辑或

整数、实数

a?b:c

选择,如果a非零则b,否则c

整数、实数

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /3 下一条