TCL/TK基础学习(二)

  • 表达式
    • 算术操作符
    • 关系、逻辑、按位、选择操作符
    • 函数

表达式

Tcl表达式由操作符、操作数、圆括号等构成。于C语言、verilog用法几乎相同。
# 算术操作符、逻辑运算符、关系运算符、按位操作符(一元)、选择运算符(三元)

算术操作符

与C语言等用法相同
set r 2
set pi 3.14
#expr 直接获取表达式的值
puts [ expr $pi * $pi * $r ** 2 ]
#tcl解释器会在执行expr前进行变量置换,传递给expr的参数为3.14*2
puts [ expr {$pi * $pi * $r ** 2} ]
#{}阻止变量传递,传给expr参数为pi*r,当表达式处理器遇到$符号时进行变量置换
#tcl处理{}内表达式的效率远高于其他表达式
#--> 针对表达式   puts 只是将结果输出#a/b 结果需要满足 a=q*b+r, 0<=|r|<|b|,r q同号,q是商,r余数
#当除数、被除数含有一个一号时,商为负
#相当于向下取整 -0.5 取 -1
puts [ expr {-1 / 2} ]
puts [ expr {1 / -2} ]#a%b 瞒足 a=q*b+r, 0<=|r|<|b|, r q同号
#当除数为负时,余数为负
#当被除数为负时,余数为正-3
puts [ expr {-7 % 3} ]
puts [ expr {7 % -3} ]
#-9  -9for {set i 1} {$i < 16 } {incr i 4} {puts "2^$i : \t [expr {2 ** $i }]"
}
39.4384
39.4384
-1
-1
2
-2
2^1 :    2
2^5 :    32
2^9 :    512
2^13 :   8192

关系、逻辑、按位、选择操作符

set a verilog
set b tcl
puts [ expr { $a < $b } ]
puts [ expr { 23 < 25 } ]
#八进制
puts [ expr { 8 == 010  } ]
puts [ expr { 8 == 0o10 } ]
#十六进制
puts [ expr { 8 == 0x8  } ]# yes/on/ture 表示真
# no/off/false 表示假
puts [expr { on && no }] puts [ expr { ($a <= $b) ? [ puts "max: $a"] : [ puts "max: $b"] } ]
0
1
1
1
1
0
max: tcl

函数

# tcl函数几乎包含全部函数
# 向上取整
set x 5.6
puts [expr {ceil($x)} ]
#向下取整
puts [expr {floor($x)}]
#四舍五入
puts [expr {round($x)}]
#[0,1]伪随机数浮点数
puts [expr {rand()} ]
#srand(x) 整数种子随机数生成# 表达式布尔值转换
bool(x)
# 整形值的实数
double(x)
# 转为整形值
int(x)
# 用至少64位宽表示整形值
wide(x)
6.0
5.0
6
0.526772657654608

#字符串操作

#字符串操作 ne eq
puts [ expr {$a eq $b}]
puts [ expr {$a ne $b}]

TCL/Tk基础学习(二)相关推荐

  1. 1.TCL/TK脚本学习——入门基础

    1.TCL/TK脚本学习--入门基础 Tcl/Tk有两个主要程序.是 tclsh 和 wish.前者是 Tcl 外壳,常用于为外壳脚本提供执行环境.Wish 类似于 tclsh,它是针对窗口化的 GU ...

  2. mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...

    MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...

  3. 大数据基础学习二:在VMware虚拟机上安装Ubuntu完整步骤及需要注意的问题(以VMware Workstation 15.1.0 Pro和Ubuntu18.04.3优麒麟版为例)

    大数据基础学习二:在VMware虚拟机上安装Ubuntu完整步骤及需要注意的问题 (以VMware Workstation 15.1.0 Pro for Windows和Ubuntu18.04.3优麒 ...

  4. python pyramid基础学习二

    python pyramid基础学习二 1.前言 前面我们使用了基础命令创建pyramid项目,并运行了Hello word,万事开头难,我们知道了开发pyramid项目需要一个env文件夹,里面包 ...

  5. Verilog基础学习二

    Verilog基础学习二 文章目录 Verilog基础学习二 一.always 块 1.阻塞性赋值和非阻塞性赋值 二.条件语句 1.if 语句 基本用法 2.避免引入锁存器 3.case 语句 4.c ...

  6. 【Java进阶营】JAVA多线程基础学习二:synchronized

    本篇主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题,没错就是使用synchronized. 一.如何解决线程安全问题? 一般 ...

  7. Java基础学习(二十七)之IO流

    1. File 1.1 File类概述和构造方法(myFile中的com.itheima_01中的FileDemo01) File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对 ...

  8. 19-10-29-C++基础学习二

    上一篇对基础部分的编译流程,输入输出,控制结构,进行了介绍,这篇主要是对里面的变量以及基本类型,标准库,类的简介 进行相关的总结: 变量: ​ · 什么是变量? ​ 变量提供了程序可以操作的有名字的存 ...

  9. 音频基础学习二——声音的波形

    文章目录 前言 一.声音的基础波形 1.正弦波 2.三角波 3.锯齿波 4.方波 二.正弦波 1.什么是正弦 2.什么是正弦波和正弦曲线 三.正弦波与声音 1.角频率 2.基波和谐波 基波: 谐波: ...

最新文章

  1. 【spring】专项配置文件的使用
  2. java两个线程交替执行
  3. java手机音乐文件夹,从原始文件夹打开音乐文件,使用Android上的意图在设备的默认应用程序上播放...
  4. 【bayes】贝叶斯估计与最大似然估计
  5. Object Detection︱RCNN、faster-RCNN框架的浅读与延伸内容笔记
  6. 【Linux】文件描述符与重定向
  7. 自考计算机毕业论文范文,计算机信息论文范文 计算机信息类有关自考毕业论文范文5000字...
  8. CRM-数据权限设计
  9. cad线加粗怎么设置_CAD图形中线条如何加粗?
  10. linux驱动程序启动失败,打开程序提示加载驱动失败?三种故障原因及解决方法...
  11. 概率统计21——指数分布和无记忆性
  12. 游戏模型提取工具NinjaRipper
  13. 公式编辑器mathType中的公式在word中显示乱码的问题
  14. python dataframe新增一列
  15. MQTT服务器Mosquitto的使用及配置过程中的一些问题和解决方法
  16. emoji 原生表情解析成对应表情包png
  17. 再牛的键盘也敲不出我的孤单
  18. 腾讯面试题:买200返100优惠券,实际上折扣是多少?
  19. html5移动页面自适应手机屏幕大小,页面完美自适应移动端屏幕的方法
  20. Xilinx RS编码IP核仿真验证

热门文章

  1. Win7电脑右下角声音图标小喇叭出现红叉没有声音解决方案
  2. 别人的紅警心得(原創)
  3. 为老人和残障人士“铺路搭桥”,这家银行是认真的
  4. Unity3D编辑器插件开发
  5. (转)Unity十大插件
  6. 《愤怒的小鸟2》上线华为应用市场;罗克韦尔自动化将以22.2亿美元收购Plex;优克联与伦敦合作伙伴签署分销协议 | 全球TMT...
  7. 基于jsp servlet javabean的学生管理系统
  8. KCP 协议 YES
  9. linux下如何捕捉方向键
  10. :“Entry point was not found.” 如何解决