初识Tcl(三):Tcl 变量及运算符 您所在的位置:网站首页 小于等于是什么意思 初识Tcl(三):Tcl 变量及运算符

初识Tcl(三):Tcl 变量及运算符

2024-07-03 05:49| 来源: 网络整理| 查看: 265

目录

Tcl变量

变量命名

动态类型

数学表达式

TCL运算符

算术运算符

关系运算符

逻辑运算符

位运算符

三元运算符

Tcl运算符优先级

Tcl算术运算符

例子

Tcl关系运算符

例子

Tcl逻辑运算符

示例

Tcl位运算符

示例

Tcl三元运算符

示例

Tcl运算符优先级

示例

Tcl变量

在TCL,变量声明没有概念。当遇到一个新的变量名,TCL将定义一个新的变量。

变量命名

变量的名称可以包含任何字符和长度。甚至可以存在空格被封闭在大括号中的变量,但不建议这样做。

set命令用于指定值的变量。set 命令的语法是:

set variableName value

变量的几个例子如下所示。

#!/usr/bin/tclsh set variableA 10 set {variable B} test puts $variableA puts ${variable B}

当上述代码被执行时,它会产生以下结果。

10 test

正如可以在上面的方案看到,$variableName 用于获取变量的值。

动态类型

TCL是一种动态类型语言。变量的值可以在需要时被动态地转换为所需的类型。例如,一个数字5,其被存储为字符串将做的算术运算时被转换为数字。它如下所示。

#!/usr/bin/tclsh set variableA "10" puts $variableA set sum [expr $variableA +20]; puts $sum

当上述代码被执行时,它会产生以下结果。

10 30 数学表达式

正如在上面的例子中看到,expr是用于表示数学表达式。 Tcl默认精度为12位。为了得到浮点运算的结果,我们应该增加至少一个十进制数字。一个简单的例子说明了上述情况。

#!/usr/bin/tclsh set variableA "10" set result [expr $variableA / 9]; puts $result set result [expr $variableA / 9.0]; puts $result set variableA "10.0" set result [expr $variableA / 9]; puts $result

当上述代码被执行时,它会产生以下结果。

1 1.1111111111111112 1.1111111111111112

在上面的例子中,可以看到三种情况。第一种情况,被除数和除数是整数,得到一个整数作为结果。第二种情况,除数是小数以及第三种情况,分数是一个十进制数。在第二和第三情况下,得到的是十进制数作的结果。

在上面的代码,可以使用tcl_precision特殊变量改变精度。它如下所示。

#!/usr/bin/tclsh set variableA "10" set tcl_precision 5 set result [expr $variableA / 9.0]; puts $result

当上述代码被执行时,它会产生以下结果。

1.1111

 

TCL运算符

运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 Tcl语言有丰富的内置运算符,运算符提供的以下几种类型:

算术运算符关系运算符逻辑运算符位运算符三元运算符

本教程将一个一个地来解释算术,关系,逻辑,位及其他运算符。

算术运算符

下表列出了所有Tcl语言支持的算术运算符。假设变量A=10,变量B=20,则:

算术运算实例

运算符描述实例+两个操作数相加A + B = 30-第一个操作数减去第二个操作数A - B = -10*两个操作数相乘A * B = 200/除法分子通过去分母B / A = 2%模运算及整数除法后的余数B % A = 0 关系运算符

下表列出了所有Tcl语言支持的关系运算符。假设变量A=10,以及变量B=20,则:

关系运算符例子

操作符描述例子==检查两个操作数的值是否相等,如果是的话那么条件为真。(A == B) 不为 true.!=检查两个操作数的值是否相等,如果值不相等,则条件为真。(A != B) 为 true.>检查左边的操作数的值是否大于右操作数的值,如果是的话那么条件为真。(A > B) 不为  true.=检查左边的操作数的值是否大于或等于右操作数的值,如果是的话那么条件为真。(A >= B) 不为 true.Left to rightRelational< >=Left to rightBitwise AND&Left to rightBitwise XOR^Left to rightBitwise OR|Left to rightLogical AND&&Left to rightLogical OR||Left to rightTernary?:Right to left Tcl算术运算符

下表列出了所有Tcl语言支持的算术运算符。假设变量A=10,变量B=20,则:

运算符描述例子+两个数相加A + B = 30-第一个操作数减去第二个操作数A - B = -10*两个操作数相乘A * B = 200/分子(B)除以分母(A)B / A = 2%模运算和整数除法后的余数B % A = 0 例子

试试下面的例子就明白了所有Tcl语言中可用的算术运算符:

#!/usr/bin/tclsh set a 21 set b 10 set c [expr $a + $b] puts "Line 1 - Value of c is $c\n" set c [expr $a - $b] puts "Line 2 - Value of c is $c\n" set c [expr $a * $b] puts "Line 3 - Value of c is $c\n" set c [expr $a / $b] puts "Line 4 - Value of c is $c\n" set c [expr $a % $b] puts "Line 5 - Value of c is $c\n"

当编译和执行上面的程序,它会产生以下结果:

Line 1 - Value of c is 31 Line 2 - Value of c is 11 Line 3 - Value of c is 210 Line 4 - Value of c is 2 Line 5 - Value of c is 1 Tcl关系运算符

下表列出了所有Tcl语言支持的关系运算符。假设变量A=10,变量B=20,则:

操作符描述例子==检查两个操作数的值是否相等,如果是的话那么条件为真。(A == B) 不为 true.!=检查两个操作数的值是否相等,如果值不相等,则条件变为真。(A != B) 为 true.>检查左边的操作数的值是否大于右操作数的值,如果是的话那么条件为真。(A > B) 不为 true.=如果左操作数的值大于或等于右操作数的值,如果是的话那么条件检查为真(A >= B) 不为 true. 2 =  15 也就是 0000 1111 示例

试试下面的例子就明白了所有Tcl语言中可用的位运算符:

#!/usr/bin/tclsh set a 60 ;# 60 = 0011 1100 set b 13 ;# 13 = 0000 1101 set c [expr $a & $b] ;# 12 = 0000 1100 puts "Line 1 - Value of c is $c\n" set c [expr $a | $b;] ;# 61 = 0011 1101 puts "Line 2 - Value of c is $c\n" set c [expr $a ^ $b;] ;# 49 = 0011 0001 puts "Line 3 - Value of c is $c\n" set c [expr $a > 2] ;# 15 = 0000 1111 puts "Line 5 - Value of c is $c\n"

当编译和执行上面的程序,会产生以下结果:

Line 1 - Value of c is 12 Line 2 - Value of c is 61 Line 3 - Value of c is 49 Line 4 - Value of c is 240 Line 5 - Value of c is 15 Tcl三元运算符

在Tcl中一个重要的运算符是三元运算符。

运算符描述示例? :条件表达式条件为真 ? 那么值为 X : 否则值为 Y 示例

试试下面的例子来理解Tcl语言的三元运算符:

#!/usr/bin/tclsh set a 10; set b [expr $a == 1 ? 20: 30] puts "Value of b is $b\n" set b [expr $a == 10 ? 20: 30] puts "Value of b is $b\n"

当编译和执行上面的程序,会产生以下结果:

Value of b is 30 Value of b is 20 Tcl运算符优先级

运算符优先级决定术语的表达分组。这会影响一个表达式是如何进行计算。某些运算符的优先级高于其他运算符;例如,乘法运算符的优先级比所述加法运算高。

例如x= 7+ 3 *2;这里,x被赋值13,而不是20,因为运算符 * 优先级高于+,所以它首先被乘以 3 * 2,然后加上7。

这里,具有最高优先级的操作出现在表格上方,那些具有最低出现在底部。在一个表达式,更高的优先级运算符将首先计算。

分类操作符关联Unary+ -Right to leftMultiplicative* / %Left to rightAdditive+ -Left to rightShift>Left to rightRelational< >=Left to rightEquality== !=Left to rightBitwise AND&Left to rightBitwise XOR^Left to rightBitwise OR|Left to rightLogical AND&&Left to rightLogical OR||Left to rightTernary?:Right to left 示例

试试下面的例子来理解Tcl语言可供选择的运算符优先级:

#!/usr/bin/tclsh set a 20 set b 10 set c 15 set d 5 set e [expr [expr $a + $b] * $c / $d ] ;# ( 30 * 15 ) / 5 puts "Value of (a + b) * c / d is : $e\n" set e [expr [expr [expr $a + $b] * $c] / $d] ;# (30 * 15 ) / 5] puts "Value of ((a + b) * c) / d is : $e\n" set e [expr [expr $a + $b] * [expr $c / $d] ] ;# (30) * (15/5) puts "Value of (a + b) * (c / d) is : $e\n" set e [expr $a + [expr $b * $c ] / $d ] ;# 20 + (150/5) puts "Value of a + (b * c) / d is : $e\n"

当编译和执行上面的程序,会产生以下结果:

Value of (a + b) * c / d is : 90 Value of ((a + b) * c) / d is : 90 Value of (a + b) * (c / d) is : 90 Value of a + (b * c) / d is : 50

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有